Feature Status Counter

VerifiedSafe

Counts features marked as @failing in Gherkin files and writes the count to feature-status.json. Used by the autonomous coding harness to decide when to stop the coding loop when all features pass.

Sby Skills Guide Bot
TestingIntermediate
6/2/2026
Claude CodeCursorWindsurf
#gherkin#feature-status#bdd#test-automation

Recommended for

Automated summary

This skill counts features marked as @failing in Gherkin feature files and writes the count to a JSON file.

Strengths

  • Automates termination decision in autonomous coding loops
  • Integrates with Gherkin feature files
  • Simple tag-based status detection

Limitations

  • Only handles @failing and @passing tags
  • Requires files to follow a specific format
  • Does not support multiple tags per feature
When to use it

Use this skill to check if all features in a BDD project have been implemented successfully.

When not to use it

Avoid this skill if you are using a non-Gherkin test format or need more detailed reporting.

Security analysis

Safe
Quality score90/100

The skill only uses Glob, Read, and Write to scan text files and output a local JSON file. It performs no destructive operations, network calls, code execution, or data exfiltration.

No concerns found

How this analysis is made

Examples

Count failing features
Run the feature-status skill to count all @failing features in the current directory.
Check loop termination
Use feature-status to determine if the coding loop should continue by reading feature-status.json.

name: feature-status description: Count features marked as @failing and write to status JSON file. Used to determine when the autonomous coding loop should end. allowed-tools: Glob, Read, Write

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:

  1. Read the first few lines
  2. Look for @failing tag
  3. 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:

  1. Scan all gherkin.feature_*.feature files in the current directory
  2. Count how many have @failing tags
  3. 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

  1. Run after each coding session to update the failing count
  2. Commit the status file to track progress over time
  3. Check before starting a new session to avoid unnecessary runs
  4. Use as a termination condition in automation scripts

From the file to a first result

The download contains exactly the content displayed on this page. This copy may differ from the latest version in the source repository.

View the source and supporting files

This download contains SKILL.md only. Any scripts, references, templates and dependencies are not included. Get the required files from the source, preserving their directory structure, before continuing.

1. Download the file

Download SKILL.md

From the root of a test project, save the file as .skill-downloads/feature-status-counter-mmbizizu/SKILL.md, or use the command below. This folder is for inspecting the skill before installation.

Command for macOS/Linux or WSL: requires a POSIX shell and curl. On Windows without WSL, use the download button and create the folder manually.

mkdir -p '.skill-downloads/feature-status-counter-mmbizizu' && curl --fail --show-error --location 'https://skills-guides.com/api/skills/feature-status-counter-mmbizizu/download' --output '.skill-downloads/feature-status-counter-mmbizizu/SKILL.md.part' && mv '.skill-downloads/feature-status-counter-mmbizizu/SKILL.md.part' '.skill-downloads/feature-status-counter-mmbizizu/SKILL.md'

2. Check prerequisites

Read SKILL.md before using it. If it references scripts or external services, inspect them and prepare the required access in your test environment.

Tools declared by the author (check availability in your agent): Glob, Read, Write

No recognized prerequisites section in this file. This does not mean it is self-contained: libraries, tools and access requirements may be mentioned elsewhere in the content or source repository.

The platforms on this page are catalog indications. The paths below follow tool documentation; they do not prove this skill has been run in those tools. No minimum tool version is confirmed for this listing.

3. Load the skill

After inspection, copy the complete folder into your project using one of the commands below, then open a new tool session. The command stops if a folder with the same name already exists: compare the files before replacing it.

Claude Code
test -f '.skill-downloads/feature-status-counter-mmbizizu/SKILL.md' && test -s '.skill-downloads/feature-status-counter-mmbizizu/SKILL.md' && mkdir -p '.claude/skills' && test ! -e '.claude/skills/feature-status' && cp -R '.skill-downloads/feature-status-counter-mmbizizu' '.claude/skills/feature-status'

Cursor
test -f '.skill-downloads/feature-status-counter-mmbizizu/SKILL.md' && test -s '.skill-downloads/feature-status-counter-mmbizizu/SKILL.md' && mkdir -p '.cursor/skills' && test ! -e '.cursor/skills/feature-status' && cp -R '.skill-downloads/feature-status-counter-mmbizizu' '.cursor/skills/feature-status'

OpenSkills

OpenSkills must already be installed. The local install/read procedure is checked with OpenSkills 1.5.0, which requires Node.js ≥ 20.6.0. Catalog slugs are not resolved automatically.

Official OpenSkills installation
openskills install './.skill-downloads/feature-status-counter-mmbizizu'

openskills read 'feature-status-counter-mmbizizu'

Reading should display the installed file content and its base directory. It does not run the skill or install its dependencies.

For an agent that reads AGENTS.md, then sync the index. This command changes AGENTS.md: review the diff before using it.

openskills sync

Manual method or another tool: attach SKILL.md to a conversation, or open it in an agent that can read files. Include any required supporting resources. No universal folder is recognized by every tool.

4. Try a first task

Use a short, synthetic input: an API endpoint, a small document or an interface brief. In a new conversation, attach the file or give the agent its path, then adapt this request:

Read .skill-downloads/feature-status-counter-mmbizizu/SKILL.md and apply its instructions to this example: [describe a test input]. Identify any missing files, dependencies or access. Produce the result requested by the skill without inventing data or running unreviewed scripts.

Expected result: output matching the skill instructions, or a precise list of missing prerequisites. A read confirmation alone does not validate a first use. If an external resource is unavailable, that path remains untested.

Related skills