Agent skill

Abide Compile

by coldteadotai in coldteadotai/abide

Compile a repository's instruction files (AGENTS.md, CLAUDE.md and friends) into an Abide rubric, then validate and calibrate it.

MITAuto-check passedAgent Workflows

Install Abide Compile

skills CLI
$ npx skills add coldteadotai/abide --skill abide-compile -a claude-code

Project install by default; add -g for ~/.claude/skills/.

GitHub CLI
$ gh skill install coldteadotai/abide abide-compile --agent claude-code

Project scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).

Manual copy
$ git clone --depth 1 https://github.com/coldteadotai/abide.git skills-src && mkdir -p .claude/skills && cp -r skills-src/skills/abide-compile .claude/skills/abide-compile && rm -rf skills-src

Use ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.

Claude Code skills documentation · loads skills from .claude/skills/

Facts

Skill name
abide-compile
GitHub stars
564
Token cost
~3.3k tokens
SKILL.md length
1,775 words
Files
1
Skills in repo
1
Repo updated
First seen
Licence
MIT

At a glance

Compile a repository's instruction files (AGENTS.md, CLAUDE.md and friends) into an Abide rubric, then validate and calibrate it.

  • Works in 8 steps: Read the sources → Extract every statement that instructs → Classify each rule into exactly one bucket → …
  • Tasks that involve Quizzes and assessments
  • SKILL.md covers Step 1. Read the sources, Step 2. Extract every…, Step 3. Classify each rule… and Step 4. Write the question for…, plus 4 more sections
  • Calls npm

What it does

Abide Compile is an agent skill from coldteadotai/abide. Compile a repository's instruction files (AGENTS.md, CLAUDE.md and friends) into an Abide rubric, then validate and calibrate it.

Its SKILL.md is about 3.3k tokens, which your agent loads only when the skill is triggered. It is a single SKILL.md file with no bundled scripts.

It sits in Agent Workflows, covering Quizzes and assessments, Agent instruction files and Hooks and plugins. The repository describes itself as: Make your coding agent abide by all your project rules. The licence is MIT.

When your agent uses it

  • Tasks that involve Quizzes and assessments
  • Tasks that involve Agent instruction files
  • Tasks that involve Hooks and plugins

Example prompts

  • “/abide-compile”

Requirements

  • Node.js

Workflow steps

8 steps, taken from the step headings in SKILL.md.

  1. Read the sources
  2. Extract every statement that instructs
  3. Classify each rule into exactly one bucket
  4. Write the question for each model rule
  5. Decide when each model rule runs
  6. Write the rubric file
  7. Validate, then calibrate
  8. Report and move on

What it can do on your machine

Read from SKILL.md and the folder at commit 0fc600f. It shows what the files ask for, not the result of running them.

  • Tool permissions

    Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.

    From allowed-tools in the SKILL.md frontmatter.

  • Runs code

    Shell commands in SKILL.md call:

    • npm

    From the folder's file list and the shell code blocks in SKILL.md.

  • Network

    No URLs in SKILL.md. Its commands use npm, which can reach the network depending on how they are called.

    From URLs in SKILL.md, links to its own repository left out.

  • Credentials

    Names no API keys, tokens, secrets or passwords.

    From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.

Context cost

Abide Compile loads about 3.3k tokens when it runs. Until then it costs about 36 tokens; SKILL.md has 1,775 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~36
When it runs · the whole SKILL.md, loaded when a task matches
~3.3k

Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.

Safety

Auto-check passed

The automated check found no risky patterns in SKILL.md.

Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.

SKILL.md

The full file from coldteadotai/abide at commit 0fc600f, republished under its MIT licence (© coldteadotai). 1,775 words, ~3,322 tokens.

Download SKILL.mdSave it as .claude/skills/abide-compile/SKILL.md (or your agent's skills folder).
name
abide-compile
description
Compile a repository's instruction files (AGENTS.md, CLAUDE.md and friends) into an Abide rubric, then validate and calibrate it.

Compile an Abide rubric

You are turning the rules a person wrote for coding agents into a rubric that a checker outside your context window can enforce on every edit. The checker sees only one rule and one diff at a time. Nothing else. Every decision below follows from that.

Two facts before you start:

  • Rules come only from the user's own files. Never add a rule you think they should have. If a file holds zero rules, the rubric holds zero rules and you say so.
  • The rubric is a committed, hand-editable file. A person will read it, and a verdict must trace to a rule they can point at. Quote their wording.

Step 1. Read the sources

The hook that sent you here listed the instruction files it found and where the rubric goes. Read every listed file in full. Then:

  • Follow pointer files. A file whose whole content is "Read instructions from X" or "Read ./AGENTS.md" is a pointer. Read X and treat X as a source in its own right: list it under sources with its own path so it gets its own hash.
  • Files under a subdirectory apply only there. The hook gave each one a scope glob. Rules from that file carry that glob.
  • Read CONTRIBUTING.md only when it was listed, and keep only sentences that give an instruction. Prose about how to open a pull request is not a rule.
  • If a lint config was listed (eslint.config.*, .eslintrc*, biome.json, stylelint config), skim it for rule names. When a rule you extract is already enforced there, keep the rule and record the lint rule name in check.overlaps. It stays in the rubric because lint runs later than an edit and the convention still binds; the label keeps it from being reported as a new finding.

Step 2. Extract every statement that instructs

Go through each file top to bottom. A rule is any sentence that tells the agent to do or not do something about code. Headings, background, and rationale are not rules, but they often say what a rule is for and belong in the wording of its question.

For each rule capture:

  • text: the user's own words, trimmed to one or two sentences. Do not paraphrase into something more general.
  • source.path and source.line: where it came from. Line numbers matter; they are how the person finds it.
  • Any code block next to it. A worked example or counterexample carries more signal than the prose, and belongs in the question's criteria (see step 4).

Do not merge two rules into one because they sit under one heading. Do not split a rule that is one idea.

Step 3. Classify each rule into exactly one bucket

Ask the questions in this order and stop at the first yes.

  1. Can a linter enforce it exactly? Then check.type is lint. Examples: interface Foo when the rule says use type; as casts; fetch(; process.env.; Date.now(); console.log; npm install. Put the linter rule that enforces it in how (@typescript-eslint/consistent-type-definitions, no-restricted-syntax, a stylelint rule) or, failing that, the AST or grep shape, and a pattern as a hint when one is obvious. Abide records these and reports them for the user's own linter; it never runs them and never sends them to the model. The judge is for what a linter cannot express.
  2. Does the rule need counting or measuring: line lengths, line counts, selector counts, nesting depth, alphabetical or length order (imports or props ordered by line length is the common one)? That is mechanical work, and the judge cannot count. If step 1 found no regex for it, check.type is deferred with reason "needs a script, not a judge". Do not turn it into a model question; it will score about 0.4 on everything.
  3. Can a judge answer it by looking at a change and nothing else? Then check.type is model. Most style, structure, comment, error handling, naming, and "do not do X" rules land here.
  4. Does answering need the rest of the repository? "Reuse existing error codes", "follow existing patterns", "any visual pattern in two places becomes a shared component", "check whether a helper already exists". Then check.type is deferred with a one line reason. These are real rules that this version cannot check on a diff, and the report says so.
  5. Is it about the conversation or the process rather than the code? "Ask when unsure", "state a plan", "run the tests before you finish", "clean up processes you started". Then check.type is unenforceable with a reason.

Every statement lands somewhere. Count them: the summary you give the user is the four bucket counts.

Step 4. Write the question for each model rule

The judge is a small, fast model that answers typed questions with a probability. It is good at narrow, concrete questions and bad at vague ones. A vague question scores about 0.4 on everything and never fires, and the user reads that silence as good news. Write every question so that a violating diff scores near 1 and a clean diff scores near 0.

  • One idea per question. If the rule has two parts, make two rules.
  • Ask about the diff: "Does this change add ...", "Does this change put ...". Name the concrete shape you want caught: the identifier, the call, the syntax, the position. "Does this change add a comment that restates what the line below it does?" beats "Are comments sparing?".
  • Never put scope in the text. "For a file under apps/web/src/server" belongs in the scope field, not in the question. Scope is a list of globs relative to the repo root, for example ["apps/web/src/server/**/*.service.ts"]. Omit it when the rule applies everywhere.
  • Keep instructions under about 60 words. Every word is billed on every edit whether or not the rule fires.
  • Ask for existence, not for a judgment of the whole: "Among the added lines, is there at least one comment whose content a reader could reconstruct from the code directly below it?" fires on the first offending line, while "Are the comments appropriate?" averages over the hunk and never leaves the middle.
  • A rule about volume or restraint ("comment sparingly", "keep it short", "minimal code") needs two questions: an existence question for the concrete offence, and a score question for the amount, with levels the judge can point at ("no such comments", "one or two", "several, or a multi-line block", "most lines"). Do not collapse "sparingly" into a single narrow case and lose the volume.
  • Use criteria for a worked example: "criteria": { "true": "a retryloop written by hand when Radashretry is installed", "false": "calling an installed utility" }. Put the user's own code block here when they gave one.
  • Question types:
    • boolean for almost everything. The answer is a probability that the rule is broken.
    • choice when the rule names a closed set of shapes and only some are wrong: criteria maps each option to a description, violating lists the wrong ones. Example: a service must be a class with static methods, so options are class-static, loose-functions, eager-init and violating is the last two.
    • score when the rule is a matter of degree: criteria is an ordered list of levels from compliant (index 0) to worst, and violatingFrom is the first level that counts as broken. Example for "minimum code that solves the problem": levels "as short as it can be", "somewhat longer than needed", "about twice as long", "several times longer", with violatingFrom: 2.
Show full SKILL.md (536 more words)Show less

Step 5. Decide when each model rule runs

Every model rule carries when: "edit" or "turn". Get this right; the wrong phase produces false violations and each one costs the agent a repair turn.

  • "edit" runs after every edit, against that one hunk. Use it when the lines in front of the judge are enough: raw error text reaching a user, a narrating comment, a hand rolled utility, a type cast, an if/else chain over a discriminated union, an inline style, a hardcoded color.
  • "turn" runs once when the agent finishes its turn, against the full diff of everything it changed. Use it for any question about the change as a whole: scope creep, changes outside what was asked, an abstraction with a single caller, overall length, whether a file grew past a cap, whether a new module was needed at all, whether a helper should have been extracted. After edit 1 of 12 these questions have no answer; a helper with one caller now may have three by the end.

The test: if a careful reviewer would want to see the whole change before answering, it is "turn".

Lint rules always run per edit and do not need when.

Step 6. Write the rubric file

Write the file the hook named (.abide/rubric.json for the project, ~/.abide/global.json for global instruction files). Global files get their own rubric because they apply in every repository.

json
{
  "version": 1,
  "compiledAt": "2026-09-17T10:00:00.000Z",
  "compiledBy": "claude",
  "sources": [
    { "path": "AGENTS.md", "scope": "**/*" },
    { "path": "apps/web/AGENTS.md", "scope": "apps/web/**/*" }
  ],
  "rules": [
    {
      "id": "no-interface",
      "text": "Use `type`, never `interface`.",
      "source": { "path": "AGENTS.md", "line": 41 },
      "scope": ["**/*.ts", "**/*.tsx"],
      "check": {
        "type": "lint",
        "pattern": "^\\s*(export\\s+)?(declare\\s+)?interface\\s+[A-Za-z_$]",
        "how": "@typescript-eslint/consistent-type-definitions"
      }
    },
    {
      "id": "raw-error-to-user",
      "text": "Never show a user a raw error. A message reaches a user only if the code that produced it authored it for a person.",
      "source": { "path": "AGENTS.md", "line": 120 },
      "scope": ["apps/web/src/**/*.ts", "apps/web/src/**/*.tsx"],
      "when": "edit",
      "check": {
        "type": "model",
        "overlaps": "coldtea/no-raw-error-in-response",
        "question": {
          "type": "boolean",
          "instructions": "Does this change put raw exception text where a user will see it: error.message, String(error), .toString() or a template of them reaching a response body, rendered copy, or a stored column that is displayed?",
          "criteria": {
            "true": "res.status(500).json({ message: String(error) })",
            "false": "log.error(error); res.status(500).json({ message: 'Could not load this run.' })"
          }
        }
      }
    },
    {
      "id": "scope-creep",
      "text": "No features beyond what was asked. Every changed line should trace directly to the user's request.",
      "source": { "path": "AGENTS.md", "line": 22 },
      "when": "turn",
      "check": {
        "type": "model",
        "question": {
          "type": "boolean",
          "instructions": "Does this change add functionality, files, options or abstractions that the task did not ask for?"
        }
      }
    },
    {
      "id": "reuse-error-codes",
      "text": "Reuse existing codes; don't invent near-duplicates.",
      "source": { "path": "AGENTS.md", "line": 131 },
      "check": { "type": "deferred", "reason": "needs the list of codes that already exist" }
    },
    {
      "id": "ask-when-unsure",
      "text": "State your assumptions explicitly. If uncertain, ask.",
      "source": { "path": "AGENTS.md", "line": 12 },
      "check": { "type": "unenforceable", "reason": "about the conversation, not the code" }
    }
  ]
}

Rules of the file:

  • id is a short kebab-case name that says what the rule catches. Ids must be unique within the file.
  • Leave sha out of sources; the CLI computes it in the next step.
  • Every rule's source.path must appear in sources.
  • No status field on new rules; it defaults to active. Do not write calibration; the CLI does.
  • Write it as plain JSON with your file-writing tool. Nothing else goes in the file.

Step 7. Validate, then calibrate

Run, using the CLI invocation the hook gave you:

abide rubric validate            (add --global for ~/.abide/global.json)
abide calibrate                  (same flag)

validate parses the file, fills in the source hashes, and prints the bucket table. Fix every issue it prints and run it again until it is clean.

calibrate runs every model rule against about twenty real hunks from the repository's git history and marks rules whose scores never get near 0 or near 1 as weak, and rules that fire on most historic hunks as noisy. Both are switched off until rewritten. When it reports any, rewrite those questions once using step 4 (make them more concrete, split them, add a criteria example, or move them to the other phase), run validate and calibrate again, and stop there whatever the result. Do not loop more than once. A repository with no history skips calibration; that is fine.

If the hook said a rule is being tuned, it attached statistics. Rewrite only the rules it named. Keep every other rule byte for byte.

Step 8. Report and move on

Tell the user, in two or three plain sentences: how many rules, split across the four buckets; which rules are weak or noisy and switched off, if any; and that the rubric is at .abide/rubric.json for them to read and edit. Then continue with whatever they asked for. Do not paste the rubric into the conversation.

© coldteadotai, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file

Files

Just SKILL.md in skills/abide-compile of coldteadotai/abide.

Open the folder on GitHubat commit 0fc600f

Compare with similar skills

Abide Compile next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.

Abide Compile compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Abide Compile this skillcoldteadotai/abide564—~3.3kAutomated safety check: PassMIT
Directional Promptingkingbootoshi/directional-prompting143—~2.3kAutomated safety check: PassMIT
CLI Masterygithub/awesome-copilot40k2 repos~517Automated safety check: PassMIT
Agent Setup Health Audittw93/Waza7.2k—~5.2kAutomated safety check: NotesMIT
Working With Claude Code Docsobra/superpowers-developing-for-claude-code142—~1.5kAutomated safety check: PassNone
Agenticashibing624/agentica352—~1.8kAutomated safety check: NotesApache-2.0

Similar skills

  • Directional Prompting

    kingbootoshi/directional-prompting

    Write prompts, system instructions, agent directives, slash commands, and skill descriptions using two stacked layers — outcome-first (define the destination, success criteria, stopping condition)…

    143 GitHub stars~2.3k tokensUpdated 4 mo ago
    Agent WorkflowsAuto-check passed
  • CLI Mastery

    github/awesome-copilot

    Official

    Interactive training for the GitHub Copilot CLI. An agent skill from github/awesome-copilot.

    40k GitHub starsUsed in 2 repos~517 tokens
    Agent WorkflowsAuto-check passed
  • Audits a project's agent configuration, instruction drift, hooks, MCP and AI maintainability, then reports prioritized findings with evidence and next actions.

    7.2k GitHub stars~5.2k tokensUpdated 2 days ago
    Agent WorkflowsAuto-check: notes
  • Working With Claude Code Docs

    obra/superpowers-developing-for-claude-code

    Looks up official Claude Code documentation stored as reference files instead of guessing about CLI commands, configuration, or plugin APIs.

    142 GitHub stars~1.5k tokensUpdated 10 mo ago
    Agent WorkflowsAuto-check passed
  • Agentica

    shibing624/agentica

    How to answer questions about the agentica product you are running inside — CLI flags, config.yaml profiles, API keys, models, sessions, resume, workspace, AGENTS.md standing rules, skills, logs…

    352 GitHub stars~1.8k tokensUpdated 15 days ago
    Agent WorkflowsAuto-check: notes
  • Claude Code Mastery Squad

    ohmyjahh/xquads-squads

    Routes a request to one of eight specialist agents covering hooks, skills, subagents, MCP integration and context engineering for Claude Code.

    276 GitHub stars~1.1k tokensUpdated 9 days ago
    Agent WorkflowsAuto-check passed

Questions about Abide Compile

What does Abide Compile do?

Compile a repository's instruction files (AGENTS.md, CLAUDE.md and friends) into an Abide rubric, then validate and calibrate it. Abide Compile is an agent skill from coldteadotai/abide.md and friends) into an Abide rubric, then validate and calibrate it.

When should I use Abide Compile?

Abide Compile fits situations like: tasks that involve Quizzes and assessments; tasks that involve Agent instruction files; tasks that involve Hooks and plugins.

How do I install Abide Compile in Claude Code?

Run `npx skills add coldteadotai/abide --skill abide-compile -a claude-code`. Or copy the skill folder (skills/abide-compile in coldteadotai/abide) into .claude/skills/abide-compile in your project. Claude Code loads it when a task matches its description.

How do I install Abide Compile in Codex?

Run `npx skills add coldteadotai/abide --skill abide-compile -a codex`. Or copy the skill folder (skills/abide-compile in coldteadotai/abide) into .agents/skills/abide-compile in your project. Codex loads it when a task matches its description.

Can I use Abide Compile in Cursor, Gemini CLI or GitHub Copilot?

Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add coldteadotai/abide --skill abide-compile -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/abide-compile, .gemini/skills/abide-compile, .github/skills/abide-compile and .opencode/skills/abide-compile in your project.

What does Abide Compile need to run?

Going by SKILL.md and its folder, Abide Compile needs the command-line tools its instructions call (npm). Our summary lists: Node.js.

Does Abide Compile access the network?

SKILL.md contains no URLs. Its commands use npm, which can reach the network depending on how they are called. This is read from the text; nothing was executed.

Is Abide Compile safe to install?

Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.

What licence does Abide Compile use?

Abide Compile is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.

How many tokens does Abide Compile use?

About 3.3k tokens (SKILL.md is roughly 13k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.

What are the alternatives to Abide Compile?

Skills that share tags, products or a category with Abide Compile: Directional Prompting (kingbootoshi/directional-prompting, 143 stars), CLI Mastery (github/awesome-copilot, 40k stars), Agent Setup Health Audit (tw93/Waza, 7.2k stars) and Working With Claude Code Docs (obra/superpowers-developing-for-claude-code, 142 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Abide Compile?

coldteadotai (a GitHub organization) maintains it in coldteadotai/abide, which has 564 GitHub stars. The repository was last updated on October 5, 2026.

Source: coldteadotai/abide on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.