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:
json1{ 2 "failing_count": 3 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:
json1{ 2 "failing_count": <count> 3}
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
python1# Pseudocode for reference 2def count_failing_features(directory): 3 failing_count = 0 4 5 # Find all feature files 6 feature_files = glob("gherkin.feature_*.feature") 7 8 for file in feature_files: 9 with open(file) as f: 10 for line in f: 11 line = line.strip() 12 13 if line.startswith("@failing"): 14 failing_count += 1 15 break 16 elif line.startswith("@passing"): 17 break 18 elif line.startswith("Feature:"): 19 # No tag found, assume passing 20 break 21 22 return failing_count
Integration with Autonomous Coding Harness
The harness can check the status file to decide whether to continue:
python1import json 2 3def should_continue_loop(): 4 with open("feature-status.json") as f: 5 status = json.load(f) 6 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