Anchor intake
Forcing-function skills for AI agents — validated to improve behavior, not just change it.
npx -y skills add lynxlangya/techne --skill anchor-intakeAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
What its author says it does
Copied from the file, not written here
Interrogate a written engineering implementation brief before work starts. Use when a user brings a ticket, PRD, design note, or substantive engineering task brief and wants to begin implementation planning; force every fixed rubric element to be accounted, cite present/weak claims against the brief, surface gaps, solution-as-goal traps, contradictions, and questions, then emit an intent-level plan. Do not use for bare one-line requests, non-engineering artifacts, code diff review, bug fixing, or execution itself.
SKILL.md
5.2 KB, as published. Nobody here has run it
anchor-intake
Force the skipped move before execution: interrogate the written brief against a fixed engineering implementation rubric, then plan only after gaps and weak assumptions are visible.
Trigger Check
Use this skill when the user provides a substantial written engineering implementation brief: a ticket, PRD, design note, or task brief with enough text to interrogate before work starts.
Do not use it for a bare one-line request, an already precise command, a
marketing brief, research proposal, prose draft, code diff review, bug fix, or
implementation execution. For unsupported or too-thin artifacts, self-eject in
one sentence and write no .techne/plan/<slug> output. If a captured artifact
later proves unsupported, use finalize --unscopable --reason ....
Boundary test: can you point to a user-authored written artifact and ask whether
it names the engineering goal, users, measurable success threshold, scope,
non-goals, inputs, data sources, dependencies, constraints, and acceptance
method? If yes, use anchor-intake. If no, eject or ask for the brief first.
Forced Procedure
- Capture the brief. Save the user-authored artifact verbatim. Run:
python3 skills/anchor-intake/scripts/intake_gate.py init --project <root> --plan <slug> --brief-file <path>. - Read the brief in full. Do not fill the rubric from memory or from the user's surrounding chat if the value is not in the captured brief.
- Account every fixed rubric element. For each of the ten elements, write
one disposition in
.techne/plan/<slug>/intake.json:presentwith citation andvalueItems,present-weakwith citation and a dependent question, orgapwith a question or visiblemodelDefault. - Surface traps and conflicts. Add span-anchored
solution-as-goalandcontradictionfindings whenever the brief implies them. Contradictions need two verified spans. - Ask only dependent questions. Every question must resolve an element or
finding and carry a
planDelta. Weak/gap questions must reference the weak span/value or the missing element label. - Author intent-level steps. Steps are not execution yet. Each step needs an
id,dependsOnAssumptions,dependsOnSteps,verifiableOutcome, and at least one terminal step reachable from a root step. - Check and repair. Run:
python3 skills/anchor-intake/scripts/intake_gate.py check --project <root> --plan <slug>. Fix structural failures by doing the missing intake work, not by padding JSON. - Finalize. Run:
python3 skills/anchor-intake/scripts/intake_gate.py finalize --project <root> --plan <slug>. Relay the generatedintakeReport.jsonto the user, especially gaps, weak elements, questions, solution-as-goal findings, contradictions, and warnings.
Script Contract
Artifacts are written under the target project:
.techne/plan/<slug>/
brief.txt # captured external artifact
context.json # computed by init
intake.json # authored by the reviewer/planner
report.json # computed by check
plan.json # computed by finalize
intakeReport.json # computed by finalize
Generated .techne/ output belongs to target projects. Do not commit it to this
repository.
Minimal intake.json shape:
{
"schema": "techne.intake/1",
"elements": {
"data-sources": {
"disposition": "gap",
"questionIds": ["Q1"]
}
},
"findings": [
{
"id": "S1",
"kind": "solution-as-goal",
"citation": {"offset": 16, "quote": "Build a Slack bot"}
}
],
"questions": [
{
"id": "Q1",
"text": "Which data sources should the implementation read?",
"resolves": ["data-sources"],
"planDelta": {"adds": ["Bind implementation to the named source"]}
}
],
"steps": [
{
"id": "s1",
"title": "Implement only the scoped behavior",
"dependsOnAssumptions": ["goal-and-why"],
"dependsOnSteps": [],
"verifiableOutcome": "The scoped behavior can be verified by the acceptance method",
"terminal": true
}
]
}
Use reference.md for the full JSON contract, fixed rubric, STOPLIST/RUBRIC-LABEL set, shape rules, warning semantics, and known weak spots.
Stop Conditions
- Stop before planning if there is no substantial written engineering brief.
- Stop before
finalizeifcheckreports blocking failures. - Stop and use
--unscopable --reasonif the artifact is not an engineering implementation brief or is too garbled/thin to interrogate honestly. - Stop before executing the work.
anchor-intakeends at a surfaced report and intent-level plan; implementation belongs to the next workflow step.