agentleFS
anombyte93anombyte93/codify/SKILL.md

codify

Skill4 starsChanged 9 months agoMITView on GitHub

Refactor any skill by extracting deterministic operations into a Python script and slimming the SKILL.md to only AI judgment parts. Use when user says /codify, codify a skill, or optimize a skill.

7 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 4 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. Distinctive:

    Ask user to approve or adjust before proceeding.

    line 73
  2. Very specific:

    Create ~/.claude/skills/<skill-name>/script.py following these rules:

    line 77
  3. Very specific:

    ALL output is JSON via a shared _out(data) helper

    line 81
  4. Distinctive:

    Use pathlib for all file operations

    line 83
  5. Distinctive:

    No external dependencies — stdlib only

    line 87
  6. Distinctive:

    Every deterministic operation becomes a code block showing the script call

    line 111
  7. Very specific:

    Keep name, description, user-invocable unchanged

    line 117
  8. Very specific:

    Add allowed-tools: if missing — list tools the skill actually uses (Read, Write, Edit, Bash, Glob, Grep, AskUserQuestion, etc.)

    line 118
  9. Very specific:

    Update description if the workflow changed significantly

    line 119
  10. Distinctive:

    Add a Script Reference table at the bottom:

    line 121
  11. Very specific:

    Run each script subcommand with --help to verify it parses.

    line 138
  12. Very specific:

    Run preflight or equivalent read-only command against the current project to verify JSON output.

    line 139
  13. Very specific:

    Before overwriting SKILL.md, save original as SKILL.md.pre-codify.

    line 144
  14. Very specific:

    Skill already has a script.py: Ask whether to merge, replace, or abort.

    line 149
  15. Very specific:

    SKILL.md references other files: Read those too and include in analysis.

    line 151

“Common” is measured: kept by at least 6 in 10 of the 4 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

Codify Skill

/codify <skill-name> — Extract deterministic logic from a skill's SKILL.md into a Python script.

What This Does

Takes a skill's SKILL.md and splits it into:

  • Script (<skill-dir>/script.py) — all deterministic operations (file ops, validation, parsing, template copying)
  • Slim SKILL.md — only AI judgment parts (questions, assessment, continuation logic) + calls to the script

Argument

/codify <skill-name> — the skill directory name under ~/.claude/skills/. If omitted, list available skills and ask.

Workflow

Phase 1: Analyze

  1. Read ~/.claude/skills/<skill-name>/SKILL.md
  2. Classify every block of instructions into one of two buckets:

DETERMINISTIC (goes into script.py):

  • File/directory creation, copying, moving, deleting
  • Template validation and repair
  • Reading files and extracting sections/data
  • Writing structured content to files
  • Git operations (status, branch, mv)
  • Environment detection (checking if files/dirs exist)
  • Any operation that always produces the same output given the same input
  • Pattern matching, categorization by filename/extension
  • JSON/YAML/TOML parsing or generation
  • Archiving, rotating, or resetting files

JUDGMENT (stays in SKILL.md):

  • Asking the user questions (AskUserQuestion)
  • Deciding what to do based on context (if/else logic about user intent)
  • Assessing completion status
  • Choosing what to work on next
  • Dispatching agents for tasks requiring reasoning
  • Evaluating quality (e.g., "is this content worth promoting?")
  • Any operation where different AI instances might reasonably make different choices
  1. Present the analysis to the user:
SKILL: <name> (<line-count> lines)

DETERMINISTIC operations found:
- <description of each operation that will become a script subcommand>

JUDGMENT operations (staying in SKILL.md):
- <description of each AI reasoning block>

Proposed script subcommands:
- <subcommand-name>: <what it does>
- <subcommand-name>: <what it does>

Ask user to approve or adjust before proceeding.

Phase 2: Build Script

Create ~/.claude/skills/<skill-name>/script.py following these rules:

Script Architecture:

  • argparse with subcommands (one per deterministic operation)
  • ALL output is JSON via a shared _out(data) helper
  • Handle markdown code blocks correctly when parsing sections (track ``` state)
  • Use pathlib for all file operations
  • Include --help for every subcommand
  • Make executable (chmod +x)
  • Use #!/usr/bin/env python3
  • No external dependencies — stdlib only

Subcommand Design:

  • Each subcommand does ONE thing well
  • Required args via --flag (not positional)
  • Return {"status": "ok", ...} on success
  • Return {"status": "error", "message": "..."} and exit(1) on failure
  • Include enough detail in output for AI to make decisions without re-reading files

Code Quality:

  • Proper error handling (file not found, permission denied)
  • Idempotent where possible (safe to run twice)
  • Comments only where logic is non-obvious

Phase 3: Rewrite SKILL.md

Rewrite the SKILL.md keeping:

  • Frontmatter (name, description, user-invocable) — unchanged
  • UX contracts, invariants, rules — preserved but condensed
  • User question definitions — preserved
  • Continuation/decision logic — preserved
  • Self-assessment criteria — preserved

Replace with script calls:

  • Every deterministic operation becomes a code block showing the script call
  • Agent Ref / Agent Reference sections → deleted entirely
  • Inline bash snippets → replaced with script subcommand calls
  • Multi-step file operations → single script subcommand

Preserve and update frontmatter:

  • Keep name, description, user-invocable unchanged
  • Add allowed-tools if missing — list tools the skill actually uses (Read, Write, Edit, Bash, Glob, Grep, AskUserQuestion, etc.)
  • Update description if the workflow changed significantly

Add a Script Reference table at the bottom:

## Script Reference

All commands output JSON. Run from skill directory.

| Command | Purpose |
|---------|---------|
| `subcommand-1 --flag` | What it does |
| `subcommand-2 --flag` | What it does |

Target: Reduce SKILL.md by 50-70% while preserving all behavior.

Phase 4: Test

Run each script subcommand with --help to verify it parses. Run preflight or equivalent read-only command against the current project to verify JSON output. Report results.

Phase 5: Backup

Before overwriting SKILL.md, save original as SKILL.md.pre-codify.

Edge Cases

  • Skill has no deterministic operations (pure judgment): Report "Nothing to extract" and skip.
  • Skill already has a script.py: Ask whether to merge, replace, or abort.
  • Skill is very short (<50 lines): Report "Too small to benefit from codification" and skip.
  • SKILL.md references other files: Read those too and include in analysis.

Example

/codify start

Result: The transformation we just did — 637-line SKILL.md with 7 Agent Ref sections became 204-line SKILL.md + 320-line session-init.py script with 9 subcommands.

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.