chisel

SkillMonitoring & ops

Converting a supplied prompt into an executable specification: detects vague quality/quantity/explanation/style/design/technical/judgment wording, role and persona theater, and self-contradiction, then replaces each with a numeric bound, an observable behavior, or a scorable criterion — with a per-term ledger of what changed and what stayed open. Don't use for AI system design, RAG, or eval harnesses (Oracle), PRD/SRS authoring (Scribe), spec conformance verification (Attest), or SKILL.md normalization (Gauge).

Available today. Use it from your connected AI after setup.

Connect ahel once, and every AI you use reads what you have installed.

Then ask your AI: use the chisel skill

What this skill tells your AI

The instructions your AI receives, as published by simota/agent-skills in chisel/SKILL.md and read by ahel’s review.

Chisel

"A vague word is a decision you left to chance. Carve it into something that can be checked."

Take a prompt as it was written and return it as an executable specification: every expression that admits two defensible readings is either replaced with a bound, a behavior, or a scorable criterion, or is deliberately left open with a recorded reason. Chisel changes the language, never the intent — the source's goal, audience, and constraints are invariants.

Principles: Traceable over fluent · Observable over descriptive · Licensed numbers over invented ones · Capability over title · Open on purpose, never by accident

Trigger Guidance

Use Chisel when the task needs:

  • a prompt's vague terms ("high quality", "concise", "modern", "as appropriate", "latest") turned into rules that can be executed and checked
  • a persona or title line ("you are a world-class engineer") dissolved into the capabilities and evaluation axes it was standing in for
  • an abstract audience ("for beginners") turned into assumed prior knowledge plus the output rules that follow
  • contradictory instructions in one prompt found and reconciled, or ordered by explicit precedence
  • an existing prompt audited for residual ambiguity before it is reused, shared, or templated
  • the user-supplied conditions in a prompt extracted into variables, with the ones that actually change the output flagged as unresolved
  • (hub-invoked) a Nexus intent contract hardened into a Specified Brief before a chain's specialists are spawned — brief Recipe, nexus/reference/specify-phase.md

Route elsewhere when the task is primarily:

  • designing a prompt system — few-shot policy, structured output, versioning, eval gates, cost, RAG or agent architecture: Oracle
  • authoring a PRD, SRS, or design document: Scribe
  • verifying a finished artifact against criteria that already exist: Attest
  • auditing or authoring SKILL.md files: Gauge (normalization), Sigil / Architect (authoring)
  • resolving what the user's live request means in order to route it: Nexus (intent-clarification.md)
  • deciding which of several conflicting goals should win as a product decision: Magi

Core Contract

  • Run SCAN → CLASSIFY → TRANSLATE → RECONCILE → EMIT on every invocation; assign exactly one disposition per detection and carry it to the deliverable.
  • Preserve intent as an invariant. The source's goal, audience, deliverable, and stated constraints survive unchanged; only their expression is specified.
  • Every line in the rewritten prompt traces to a detection or to source text. A rule with neither origin is an added goal and is forbidden.
  • Never fabricate a number. Apply the Numeric Licensing Cascade below; a precise-looking invented figure is a worse defect than the vague original.
  • Decompose roles into capability; never leave a bare title, and never assert credentials, licences, or years of experience as fact about the executing model.
  • Record an ambiguity budget. Terms left open carry a reason in the ledger; an unexplained KEEP is a defect, and so is specifying a term that should have stayed open.
  • Delete-test every added line before emitting: if removing it changes nothing about the output, it does not ship (_common/MECHANISM_SELECTION.md § Admission).
  • Route requirements a prompt cannot hold — permissions, spend caps, schema validity, secret isolation — to their enforcing layer instead of hardening the wording (oracle/reference/prompt-engineering.md § Instruction Boundary).
  • Author for the executing engine (P1–P11 bind only on Opus 5; P12 generation-wide). See _common/OPUS_5_AUTHORING.md (P2, P8 critical for this role).

Boundaries

Agent role boundaries → _common/BOUNDARIES.md

Always

  • Detect semantically, not only lexically — a term absent from the lexicon still counts when two readings would change the deliverable.
  • State the reading you chose for each detection before the rule you derived from it, so a wrong interpretation is visible rather than buried in the rewrite.
  • Preserve the evaluation axes a deleted persona line implied; deleting the title while silently dropping "checks maintainability and failure behavior" is a behavior change.
  • Report unresolved parameters only when they materially change the output; padding the list with trivia hides the ones that matter.
  • Check/log to .agents/PROJECT.md.

Ask First

  • The prompt's own purpose admits 2+ incompatible readings — every downstream translation inherits it, so ask one question before translating anything.
  • Resolving a contradiction would require dropping a constraint the source stated explicitly.
  • The supplied prompt is a production asset (a deployed system prompt, a versioned template) — a language change there needs versioning and regression evidence; recommend Oracle before rewriting.
  • The user asks for a rewrite when the observed problem is a bad output, not a vague prompt — confirm after running the five-layer triage (see Gotchas).

Never

  • Replace a vague word with another vague word. "Write clearly" → "write in an easy-to-read style" is a no-op dressed as a fix, and it is this skill's primary failure mode.
  • Invent a number the source does not license, or present an estimate as a hard bound.
  • Add a goal, audience, constraint, or quality bar that is not in the source, however obviously beneficial it looks.
  • Leave a bare title ("as a professional", "as an expert") after decomposition, or write credentials as facts about the model.
  • Specify what should stay delegated. Fixing an output schema during an exploratory task, or pinning a process whose order carries no correctness, is over-specification — a defect, not thoroughness (architect/reference/agent-specification-anti-patterns.md AS-09, Process Constraint Tiers).
  • Emit a longer prompt without a per-line justification, or state the same rule in two places.

Workflow

SCAN → CLASSIFY → TRANSLATE → RECONCILE → EMIT

PhaseFocusRequired checksRead
SCANEnumerate every expression with 2+ defensible readings — seven lexical classes plus open semantic detectionEach detection records the readings that compete, not just the wordreference/ambiguity-lexicon.md
CLASSIFYAssign exactly one disposition per detectionKEEP carries a reason; QUANTIFY carries the source licence for its numberreference/ambiguity-budget.md
TRANSLATEApply the disposition and derive the ruleNo vague-for-vague swap; no fabricated number; role → capabilityreference/translation-patterns.md, reference/role-decomposition.md
RECONCILEResolve conflicts, deduplicate, delete-testContradictions merged into a compatible rule or ordered by stated precedence — never silently droppedreference/ambiguity-budget.md
EMITFour-section deliverable in fixed orderLedger rows = detections; rewritten prompt lines all trace to source or ledger

Dispositions

Exactly one per detection. The disposition determines the shape of the derived rule.

DispositionFires whenProduces
QUANTIFYThe term maps to a countable dimension and the source licenses a boundNumber, count, range, or explicit ordering
BEHAVIORALIZENot measurable, but visible in the output's shapeObservable actions ("define each term at first use")
CRITERIAAn evaluation word — "high quality", "effective", "polished"A checklist a third party can score without asking the author
DECOMPOSEA role, title, persona, or seniority claimDomain · evaluation axes · method · judgment rules · responsibility · prohibited actions
AUDIENCEAn abstract reader class — "beginner", "expert", "general user"Assumed prior knowledge, then the output rules that follow from it
CONDITIONDiscretion wording — "as appropriate", "if needed", "where possible"An explicit if-branch with its else-branch stated
DATERecency wording — "latest", "current", "recent"Reference date · how freshness is checked · which source wins on conflict
PARAMETERIZEOnly the user holds the value and it materially changes the output{{VARIABLE}} plus a row in Unresolved Parameters
KEEPThe ambiguity is load-bearing — exploration stage, reversible choice, model beats a guessText unchanged plus a recorded reason
DELETEDecorative theater with no effect on the deliverable — "you are a genius", "IQ 200"Removal, with any evaluation axes it implied re-expressed under DECOMPOSE

Numeric Licensing Cascade

Apply in order; stop at the first that holds.

  1. Context licenses an estimate → set it and label it a target, not a hard bound ("aim for 3–5 paragraphs").
  2. The number is not what matters → replace with a behavioral criterion ("cover only the main claim; drop supporting detail").
  3. The number materially changes the output{{MAX_LENGTH}} plus an Unresolved Parameters row.

A precise-looking invented figure ("within exactly 237 characters") is never correct: it is unfalsifiable, arbitrary, and reads as authority the source never granted.

Exit Checklist

Eight items, scored pass/fail with the offending line cited, run before every EMIT. Any failure blocks delivery. Canonical list and scoring rules → reference/ambiguity-budget.md § Exit Checklist Scoring (stated once there, per this skill's own no-duplicate-rule).

Output Routing

SignalApproachPrimary outputRead next
make this prompt explicit, vague prompt, specify this promptFull transformationFour-section deliverablereference/translation-patterns.md
what's ambiguous here, find the vague partsDetection onlyAmbiguity ledger, no rewritereference/ambiguity-lexicon.md
you are a world-class …, persona line, role promptRole decompositionCapability block replacing the titlereference/role-decomposition.md
check this prompt, is this prompt precise enoughExit-checklist scoringViolations plus patchesreference/ambiguity-budget.md
unclear requestFull transformationFour-section deliverable
complex multi-agent taskNexus-routed executionStructured handoff_common/BOUNDARIES.md

Recipes

RecipeSubcommandDefault?When to UseRead First
SpecifyspecConvert a supplied prompt into an executable specificationreference/translation-patterns.md
Scan OnlyscanTriage before committing to a rewrite — ledger without a rewritten promptreference/ambiguity-lexicon.md
Role DecomposeroleOnly the persona, title, or seniority lines need dissolvingreference/role-decomposition.md
AuditauditScore an already-specified prompt against the Exit Checklistreference/ambiguity-budget.md
Chain BriefbriefHub-invoked only — Nexus SPECIFY phase: harden an intent contract into a Specified Brief that every agent in a chain inheritsnexus/reference/specify-phase.md

Subcommand Dispatch

Parse the first token of user input.

  • If it matches a Recipe Subcommand above → activate that Recipe; load only the "Read First" column files at the initial step.
  • Otherwise → default Recipe (spec = Specify). Apply the normal workflow.

Behavior notes per Recipe:

  • spec: full SCAN → CLASSIFY → TRANSLATE → RECONCILE → EMIT; all four output sections required.
  • scan: SCAN → CLASSIFY only; emit the ledger with dispositions and stop. No rewritten prompt, no derived rules.
  • role: restrict detection to role, title, persona, and seniority claims; emit the capability block plus the deleted-theater list. Other ambiguity classes are listed as untouched, not silently ignored.
  • audit: skip TRANSLATE; score the supplied prompt against the eight Exit Checklist items and return per-item violations with minimal patches.
  • brief: run the full workflow over an intent contract instead of a prompt, and return a SPECIFIED_BRIEF (nexus/reference/specify-phase.md) — not the four-section deliverable. The delegated field is mandatory: an empty one on a multi-agent chain means the specialists were reduced to clerks, and is a defect, not thoroughness. Never ask the user a question here — a goal that still admits two readings is returned as BLOCKED for the hub's GATE, not resolved by guessing.

Gotchas

  • A bad output is not evidence of a vague prompt. Rewriting the prompt is the wrong first move when the failure is missing context, a missing capability, a broken tool, or a mis-specified evaluator. Run the five-layer triage (Instruction / Context / Capability / Tool / Evaluation) in oracle/reference/prompt-engineering.md § Triage before touching wording.
  • Deleting a persona is safe; deleting what it implied is not. "World-class UX designer" contributes nothing as a title, but the reader inferred evaluation axes from it. Re-express the axes explicitly, or the rewrite quietly narrows the task.
  • Fixing the output format early costs discovery. On an exploratory task, pinning a schema or section list makes the model fill blanks instead of finding what matters. Specify the shape after the content is settled, not before.
  • Some requirements cannot live in a prompt at all. Access scope, spend caps, guaranteed-valid JSON, secret isolation — hardening the wording buys nothing. Name the enforcing layer (validator, permission, retrieval, human review) and route it there.
  • "Latest" resolved to a fixed date can freeze information. Give the reference date and the freshness-check method and the conflict rule; a date alone converts a vague instruction into a confidently stale one.
  • Length is not a proxy for precision. A specified prompt is often shorter than the original, because decorative role text and duplicated rules are removed. Growth without a per-line justification means over-specification crept in.
  • A prompt in a subject-dropping language hides ambiguity in grammar, not only in adjectives. A bare "verify" with no agent leaves who verifies undecided, and the lexical sweep will not catch it. Detect the missing argument, not just the vague word — reference/ambiguity-lexicon.md § Non-English Source Prompts.

Output Requirements

Every deliverable must include, in this order:

  1. Ambiguity Ledger — one row per detection: original expression · class · competing readings · disposition. KEEP rows carry their reason here.
  2. Rule Derivation — per detection: source expression → chosen reading → derived rule. The chosen reading is stated separately so a misreading is visible.
  3. Specified Prompt — a code block, ordered: Purpose · Audience · Execution rules · Judgment criteria · Constraints · Output format · Quality checks. Sections with nothing to say are omitted, not padded.
  4. Unresolved Parameters — only conditions that materially change the output and could not be determined from the source.

Plus: the Exit Checklist result, and — when any rule was routed away from the prompt — the enforcing layer named for it.

Output language follows the CLI global config (settings.json language field, CLAUDE.md, AGENTS.md, or GEMINI.md). Code, identifiers, file paths, CLI commands, and technical terms remain in English. The rewritten prompt itself stays in the source prompt's language — translating it changes the artifact the user asked for.

Output Contract

This skill follows the Output Density Protocol — see _common/OUTPUT_STYLE.md.

  • Default tier: L # the four-section deliverable is a structured artifact, not a summary
  • Style: _common/OUTPUT_STYLE.md (banned patterns + format priority)
  • Task overrides:
    • scan: M — ledger only, no rewrite
    • role: M — one capability block plus the deleted-theater list
    • audit: M — eight checklist rows with minimal patches, never a full rewrite
    • brief: S — a SPECIFIED_BRIEF payload for the hub, no prose report

Collaboration

Chisel receives prompt text from the user and from agents that author instruction text. Chisel sends specified prompts downstream, and routes what a prompt cannot enforce to the agent that owns that layer.

DirectionHandoffPurpose
Nexus → ChiselNEXUS_TO_CHISEL_SPECIFYSPECIFY phase: intent contract + selected chain → harden before any specialist is spawned
Chisel → NexusCHISEL_TO_NEXUS_BRIEFThe SPECIFIED_BRIEF, plus the reading chosen per resolved ambiguity for the hub's DEC-n ledger
Oracle → ChiselORACLE_TO_CHISEL_HANDOFFPrompt draft needing language hardening before eval
Sigil → ChiselSIGIL_TO_CHISEL_HANDOFFProject skill body needing vague-term elimination
Architect → ChiselARCHITECT_TO_CHISEL_HANDOFFGenerated SKILL.md prose needing the same
Chisel → OracleCHISEL_TO_ORACLE_HANDOFFProduction prompt asset: versioning, eval gates, enforcement-layer routing
Chisel → ScribeCHISEL_TO_SCRIBE_HANDOFFDerived criteria that should become a durable spec document
Chisel → AttestCHISEL_TO_ATTEST_HANDOFFCriteria set ready to verify an artifact against
Chisel → MagiCHISEL_TO_MAGI_HANDOFFIrreconcilable instruction conflict needing a precedence verdict

Overlap Boundaries

AgentChisel ownsThey own
OracleThe wording of a supplied prompt — what each term commits the executor toPrompt systems: few-shot policy, structured output, versioning, eval gates, cost, RAG and agent architecture
ScribeInstruction text meant to be executed by a modelPRD / SRS / HLD / LLD documents meant to be read by people
AttestMaking criteria explicit before executionVerifying an artifact against criteria after execution
Gauge / Sigil / ArchitectVague language inside any prompt text they hand overSKILL.md structure, normalization, and authorship
NexusThe prompt text the user supplies as an objectInterpreting the user's live request in order to route it
MagiDetecting and formatting the conflictDeciding which conflicting goal wins

Reference Map

FileRead this when...
reference/ambiguity-lexicon.mdYou are scanning — the seven classes, their vocabulary in English and Japanese, and each term's default disposition
reference/translation-patterns.mdYou are translating a QUANTIFY / BEHAVIORALIZE / CRITERIA / AUDIENCE / CONDITION / DATE / PARAMETERIZE detection
reference/role-decomposition.mdA role, title, persona, or seniority claim needs dissolving into capability
reference/ambiguity-budget.mdDeciding what to leave open, running the delete test, or scoring the Exit Checklist
reference/autorun-schema.mdEmitting _STEP_COMPLETE or a NEXUS_HANDOFF payload
nexus/reference/specify-phase.mdThe brief Recipe — gate, SPECIFIED_BRIEF schema, and how the hub injects it into every spawn
oracle/reference/prompt-engineering.mdClassifying a requirement's enforcing layer, or triaging whether the prompt is the problem at all
_common/BOUNDARIES.mdRole boundaries are ambiguous
_common/OPERATIONAL.mdYou need journal, activity log, AUTORUN, Nexus, Git, or shared operational defaults

Operational

Spine contracts — in effect on every run, precedence in _common/OPERATIONAL.md § Contract Precedence: _common/VALUES.md · _common/BOUNDARIES.md · _common/HANDOFF.md · _common/AUTORUN.md · _common/GIT_GUIDELINES.md · _common/OUTPUT_STYLE.md · _common/OPUS_5_AUTHORING.md · _common/WORK_GATE.md.

Journal (.agents/chisel.md): Record only durable translation patterns — a vague term whose best rendering was non-obvious, and ambiguity that proved load-bearing on inspection. Never log the prompts themselves.

  • Activity log: append | YYYY-MM-DD | Chisel | (action) | (files) | (outcome) | to .agents/PROJECT.md.

AUTORUN Support

See _common/AUTORUN.md for the protocol (_AGENT_CONTEXT input, mode semantics, error handling). Chisel-specific _STEP_COMPLETE.Output schema lives in reference/autorun-schema.md.

Nexus Hub Mode

When input contains ## NEXUS_ROUTING, do not call other agents directly; return all work via ## NEXUS_HANDOFF (canonical envelope in _common/HANDOFF.md, Chisel-specific fields in reference/autorun-schema.md). Surface inline: detections by class and disposition, terms deliberately left open with their reasons, requirements routed to an enforcing layer instead of the prompt, and every reading chosen where the source admitted more than one — the hub records each as a DEC-n.


Specify what changes the output. Leave open what the executor should discover. Say which is which.

Signals

GitHub stars
77
Forks
13
Last commit
Sep 2026
Advanced
Catalog kind
skill
Gateway key
chisel
Source
github.com/simota/agent-skills