Claude-skill-registry feature-status
Count features marked as @failing and write to status JSON file. Used to determine when the autonomous coding loop should end.
install
source · Clone the upstream repo
git clone https://github.com/majiayu000/claude-skill-registry
Claude Code · Install into ~/.claude/skills/
T=$(mktemp -d) && git clone --depth=1 https://github.com/majiayu000/claude-skill-registry "$T" && mkdir -p ~/.claude/skills && cp -r "$T/skills/data/feature-status" ~/.claude/skills/majiayu000-claude-skill-registry-feature-status && rm -rf "$T"
manifest:
skills/data/feature-status/SKILL.mdsource content
Feature Status Skill
Purpose
This skill counts the number of features marked as
@failing and writes the count to a JSON file. This is used by the autonomous coding harness to determine when the implementation loop should end (when failing_count reaches 0).
Output File
File:
feature-status.json
Format:
{ "failing_count": 3 }
Loop Termination Logic:
- If
→ Continue coding sessionsfailing_count > 0 - If
→ All features implemented, end loopfailing_count == 0
How It Works
Step 1: Find Feature Files
Use Glob to find all Gherkin feature files:
Pattern: gherkin.feature_*.feature
Step 2: Count @failing Tags
For each feature file:
- Read the first few lines
- Look for
tag@failing - If found, increment the failing counter
Tag Detection:
@failing Feature: Some Feature Name ...
Read lines until you find either:
→ Count this feature as failing@failing
→ Skip (not failing)@passing
line → Stop searching (assume no tag = passing)Feature:
Step 3: Write JSON
Write
feature-status.json with just the failing count:
{ "failing_count": <count> }
Usage
Simply invoke the skill:
/feature-status
This will:
- Scan all
files in the current directorygherkin.feature_*.feature - Count how many have
tags@failing - Write the count to
feature-status.json
Example Implementation
# Pseudocode for reference def count_failing_features(directory): failing_count = 0 # Find all feature files feature_files = glob("gherkin.feature_*.feature") for file in feature_files: with open(file) as f: for line in f: line = line.strip() if line.startswith("@failing"): failing_count += 1 break elif line.startswith("@passing"): break elif line.startswith("Feature:"): # No tag found, assume passing break return failing_count
Integration with Autonomous Coding Harness
The harness can check the status file to decide whether to continue:
import json def should_continue_loop(): with open("feature-status.json") as f: status = json.load(f) return status["failing_count"] > 0
Best Practices
- Run after each coding session to update the failing count
- Commit the status file to track progress over time
- Check before starting a new session to avoid unnecessary runs
- Use as a termination condition in automation scripts