agentleFS
CowboyLogicCowboyLogic/ai-dev/.github/skills/skill-maintenance/SKILL.md

skill-maintenance

Skill4 starsChanged 11 days agoMITView on GitHub

Full skill maintenance cycle: research updates, run benchmark evals, create/update the docs/skills overview page, and propose a commit. Use when maintaining any skill in the skills/ folder of this repo.

11 other projects use a version of this.

Adopted by

Most recently taken up by

The file

Show its rules and text

We split this skill into the rules it gives an agent

15 rules. 0 are common, 5 are distinctive, and 10 are very specific to this project.

  • 0

    Common

    Most of the 10 edited versions we read keep these.

  • 5

    Distinctive

    This author's own choices. Worth a look.

  • 10

    Very specific

    Tied to their project's names, files or tools. Probably skip.

  • Common
  • Distinctive
  • Very specific
  1. Very specific:

    Run the full maintenance cycle for one skill in this repository.

    line 9
  2. Very specific:

    Read skills/<skill-name>/SKILL.md and all files under skills/<skill-name>/references/ in full to understand the current state.

    line 22
  3. Very specific:

    Use the eval cases in skills/<skill-name>/evals/evals.json.

    line 45
  4. Very specific:

    All runs go in skills/<skill-name>-workspace/iteration-N/ where N is the next iteration number (check for existing iteration folders first).

    line 49
  5. Very specific:

    Write eval_metadata.json in each eval directory with the prompt and assertions.

    line 67
  6. Very specific:

    Write benchmark.json in the iteration folder:

    line 90
  7. Distinctive:

    Follow all repo Markdown standards:

    line 205
  8. Very specific:

    Do not add a "Last updated" date.

    line 213
  9. Distinctive:

    Update the one-line result in "Evaluation and history" with the new benchmark data from Stage 3.

    line 214
  10. Distinctive:

    Update "What it does" and "Where it applies" if the skill's scope changed materially.

    line 216
  11. Distinctive:

    After creating a new page:

    line 220
  12. Very specific:

    Add it to the Skills: section in mkdocs.yml:

    line 222
  13. Very specific:

    Update the skill's entry in docs/skills/index.md:

    line 229
  14. Distinctive:

    If there is no entry yet, add one in the appropriate section.

    line 234
  15. Very specific:

    Use type docs(skills) when the primary changes are docs + skill reference updates.

    line 249

“Common” is measured: kept by at least 6 in 10 of the 10 edited versions of this file we could read. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.

Keep what fits and drop the rest. Your version, ready for your agents.
Files
SKILL.md

Skill Maintenance — CowboyLogic/ai-dev

Run the full maintenance cycle for one skill in this repository. The skill to maintain is named by the argument this skill was invoked with. This file calls that name <skill-name>, and the skill lives at skills/<skill-name>/. If no argument was given, ask which folder under skills/ to maintain before doing anything else.

Work through each stage in order. Do not skip a stage or move to the next until the current one is complete.


Stage 1 — Research and update the skill

  1. Read skills/<skill-name>/SKILL.md and all files under skills/<skill-name>/references/ in full to understand the current state.
  2. Research what has changed since the skill was last updated. The skill's sources.json (if present) lists the upstream docs to check. Use the Tank research subagent to pull current information from those sources. Focus on: new config fields, changed defaults, deprecated keys, new CLI commands, and anything that would cause the current reference files to produce wrong or outdated answers.
  3. Apply updates:
    • Edit skills/<skill-name>/SKILL.md if the task→reference map, quick-ops list, or config file table needs updating.
    • Edit files under skills/<skill-name>/references/ with specific, targeted changes — do not rewrite sections that are still accurate.
  4. Note every change made — you will need this list for the changelog entry in Stage 4 and the commit message in Stage 5.

Stage 2 — Run benchmark evaluations

Use the eval cases in skills/<skill-name>/evals/evals.json. If no evals exist yet, draft 3–4 realistic test cases that cover the skill's primary tasks and save them to skills/<skill-name>/evals/evals.json before proceeding.

All runs go in skills/<skill-name>-workspace/iteration-N/ where N is the next iteration number (check for existing iteration folders first).

Launch all runs in a single turn — spawn with-skill AND without-skill subagents simultaneously for every eval case. Do not batch them sequentially.

  • With-skill run: provide the full SKILL.md content and relevant reference file content in the subagent prompt, then ask it to answer the eval prompt.
  • Without-skill (baseline) run: same prompt, no skill content — the subagent answers from training knowledge alone.

While runs are in progress, draft assertions for each eval case and save them to evals/evals.json. Good assertions are:

  • Objectively verifiable (not "does it sound right")
  • Named clearly enough that someone reading the benchmark immediately knows what each one checks

Write eval_metadata.json in each eval directory with the prompt and assertions.


Stage 3 — Grade and benchmark

Once all runs are complete:

  1. Grade every run against its assertions. For each run directory write grading.json with this structure:
    {
      "eval_id": "<name>",
      "variant": "with_skill | without_skill",
      "assertions": [
        { "id": "<id>", "passed": true|false, "note": "<brief evidence>" }
      ],
      "score": N,
      "max_score": N,
      "pass_rate": 0.0–1.0
    }
  2. Write benchmark.json in the iteration folder:
    {
      "skill_name": "<skill-name>",
      "iteration": N,
      "run_date": "<YYYY-MM-DD>",
      "evals": [
        {
          "id": "<eval-name>",
          "with_skill":    { "score": N, "max_score": N, "pass_rate": 0.0 },
          "without_skill": { "score": N, "max_score": N, "pass_rate": 0.0 },
          "delta": 0.0
        }
      ],
      "summary": {
        "with_skill_total": N,
        "without_skill_total": N,
        "max_total": N,
        "with_skill_pass_rate": 0.0,
        "without_skill_pass_rate": 0.0,
        "overall_delta": 0.0
      }
    }
  3. Summarise the results: overall pass rates, delta, and — importantly — what the baseline got wrong and why it matters.

Stage 4 — Record history and results, and update the docs overview page

The skill folder is the record of the skill's history and benchmark results. The docs overview page is short and links to it.

In the skill folder

  • skills/<skill-name>/CHANGELOG.md — add an entry at the top, newest first, listing every change made in Stage 1. Create the file with a # Changelog heading if it does not exist.

    ## <YYYY-MM-DD> — v<N> (<label>)
    
    - <File changed and what was updated.>
  • skills/<skill-name>/README.md — add the Stage 3 results under an ## Evaluation results heading: the run date and iteration, the scenario and run counts, the overall pass rates, a per-scenario table with notes on what the baseline got wrong, and a key takeaway. Keep earlier iterations below the new one. Create the file if it does not exist.

The docs overview page

The page lives at docs/skills/<skill-name>.md. Check whether it already exists. It lets a reader decide whether to use the skill and install it. It must not embed skill content: no instruction text, reference file contents, examples, workflows, rule tables, or script usage. Link to skills/<skill-name>/ instead.

If it does not exist — create it

Use this structure:

# <Human-readable skill title>

<One-paragraph description of what the skill covers.>

- **Skill name:** `<skill-name>`
- **Source:** [skills/<skill-name>](https://github.com/CowboyLogic/ai-dev/tree/main/skills/<skill-name>)

---

## What it does

<One short paragraph: the gap the skill closes and how it works. List the topics it
covers. Do not reproduce rules, tables, or examples from the skill.>

## Where it applies

<One or two sentences: the clients, tasks, or repositories the skill is for.>

---

## Install

### Using `npx skills` (recommended — works across all agents)

\`\`\`bash
npx skills add CowboyLogic/ai-dev --skill <skill-name> -g
npx skills add CowboyLogic/ai-dev --skill <skill-name> --agent <agent> -g
npx skills add CowboyLogic/ai-dev --skill <skill-name> -g -l
\`\`\`

### Verify installation

\`\`\`bash
npx skills ls -g
\`\`\`

---

## Evaluation and history

<Include this section only if the skill has benchmark results. One sentence giving the run
date and the with-skill and baseline pass rates, then links to the skill's README.md and
CHANGELOG.md on GitHub.>

---

## Related

<Links to sibling skills, if any.>

Follow all repo Markdown standards:

  • GFM callouts (> [!NOTE], > [!TIP], > [!WARNING]) — never plain bold blockquotes for informational content
  • Blank lines around all block elements
  • Fenced code blocks with language identifiers

If it already exists — update it

  • Do not add a "Last updated" date. CHANGELOG.md and git history carry dates.
  • Update the one-line result in "Evaluation and history" with the new benchmark data from Stage 3.
  • Update "What it does" and "Where it applies" if the skill's scope changed materially.

Wire up the page (new pages only)

After creating a new page:

  1. Add it to the Skills: section in mkdocs.yml:
    - Skills:
        - Overview: skills/index.md
        - <Title>: skills/<skill-name>.md   # add here
  2. Update the skill's entry in docs/skills/index.md:
    • Change the existing GitHub-only link to include a Skill Overview link:
      [Skill Overview](skills/<skill-name>.md) · [View on GitHub](https://github.com/...)
    • If there is no entry yet, add one in the appropriate section.

Stage 5 — Propose a commit message

Review all files changed across all stages. Propose a commit message following the repo convention:

docs(skills): <imperative subject line, ≤50 chars>

<Body — what changed and why, bullet points per file/area>

Use type docs(skills) when the primary changes are docs + skill reference updates. Use feat(skills) only if a new skill was created from scratch.

Present the message for review. Do not run git commit — wait for explicit confirmation from the user.

Download now (ZIP)

Does it work?

Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.

No reviews yet

People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.

  • It worked
  • Partly
  • It didn't
What did you use it for? e.g. Reviewing pull requests in a Rails app

Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.

Your trail

Files you open will collect here, so you can find them again.

Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.

Now do this for your own.

Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.