Feature Status Skill
feature-status
Count features marked as @failing and write to status JSON file. Used to determine when the autonomous coding loop should end.
SKILL.md
Full skill instructions
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
failing_count > 0→ Continue coding sessions - If
failing_count == 0→ All features implemented, end loop
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
@failingtag - If found, increment the failing counter
Tag Detection:
@failing
Feature: Some Feature Name
...
Read lines until you find either:
@failing→ Count this feature as failing@passing→ Skip (not failing)Feature:line → Stop searching (assume no tag = passing)
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
gherkin.feature_*.featurefiles in the current directory - Count how many have
@failingtags - 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
