Opentasks skill
Maintain a lightweight docs/tasks/ repo convention for coding-agent tasks and open questions. Use when the user asks to bootstrap a tasks folder, create a task/question, start/block/close/reopen an item, list open tasks/questions, or sync the derived task index.From its SKILL.md
npx -y skills add luisalima/opentasks-skillAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
One thing to look at
- 0 stars0 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.
SKILL.md
29.7 KB, ~7.5k tokens by cl100k_base, as published. Nobody here has run it
/opentasks — docs/tasks/ convention manager
You are managing a lightweight repo convention in docs/tasks/, not an external task manager. The argument you received is:
$ARGUMENTS
Parse the intent and execute the appropriate operation below. If the argument is empty or ambiguous, run status.
Accept common aliases:
init→bootstrapcreate task,add task,task→new taskopen question,add question,question→new questionclose,finish,complete,mark done→donebegin,work on→startpick up,reserve→claim
Where an operation accepts <item>, resolve it before editing:
- Exact filename under
docs/tasks/, with optional.md. - Exact slug, meaning filename without
.md. - Task shorthand
T<N>/t<N>→ the unique task withid: T<N>ort<N>-*.mdfilename. - Question shorthand
Q<N>/q<N>→ the uniqueq<N>-*.mdfile. - Exact case-insensitive title match from the file heading or index line.
If resolution finds no item, stop and tell the user what was searched. If it finds multiple items, stop and ask for the exact slug.
Folder guard
Before executing any operation other than bootstrap / init, check whether docs/tasks/ exists. If it does not, stop and tell the user:
No
docs/tasks/folder found. Run/opentasks bootstrapto set up the system first.
Task sizing and agent behavior
A task should be small enough for one focused agent session or one coherent PR. Good tasks have one objective, concrete Done when criteria, independent verification, and no unresolved design choice hidden inside the scope.
Done when must be independently checkable — it states how someone other than the implementer confirms success, so it must not merely restate the work ("implement X"). The verification mechanism is repo-dependent and there is no single required form: a test command, a lint or validation run, an assertable contract, or an observable artifact or behavior. For security-relevant tasks, Done when must include the adversarial/negative assertion (malicious input rejected, unauthorized request blocked), not only the happy path — the negative case is the load-bearing signal. When a concrete command or method exists, record it in the optional verify: frontmatter field; the field is a convenience pointer, not a requirement.
Split a task when it has multiple outputs, multiple owners, unresolved decisions, or a title that naturally contains "and then." Do not create tasks for every tiny edit. Create them when work needs to survive chat context, coordinate across humans or agents, or show up in git history.
Agents should create tasks when breaking down a user-approved plan, discovering follow-up work that should not be done immediately, finding a blocker or dependency, extracting implementation work from an ADR, or leaving continuation work for another human or agent. Agents should not create tasks merely to describe work they are already completing in the same turn. When a task is spawned from a review or a finding (a security review, an audit, a code-review comment), record its source — the report path, PR, or finding id — in links: so the provenance is traceable.
ADRs and decision flow
Use questions for unresolved decisions, ADRs for durable decisions, and tasks for execution:
Q<N> -> ADR -> T<N>
- Open
Q<N>when a decision is unresolved. - Create or update an ADR when the answer has architectural or long-lived consequences.
- Close the question with the decision and link to the ADR.
- Create tasks for the implementation work that follows from the ADR.
- Link ADR-derived tasks back to the ADR using
links:. - If a task uncovers a durable decision, open a question and block or split the task until the ADR resolves it.
- If implementation shows the ADR is wrong or incomplete, open a new question instead of silently changing task scope.
- A task whose blocker is an open decision references that question in
blocked_by: Q<N>and staysautonomy: humanuntil the question closes — this keeps the decision flow and the automation gate consistent.blocked_byis the normative decision link; freeformlinks:stays for general provenance.
Operations
bootstrap / init
Set up a fresh docs/tasks/ folder in a new project.
- Ask the user for the project's deliverable names if not obvious from context (e.g. D1, D2, ops).
- Confirm what language the project documentation is in (default to English if obvious).
- Create
docs/tasks/README.md— a human-readable conventions doc. See §README below for required content. - Create
docs/tasks/TASK_INDEX.md— empty index with group headers for each deliverable + Open questions section. See §INDEX below for format. - Do NOT create any tasks or questions yet.
- Append the following block to
AGENTS.md(create it if absent) only if it does not already contain a## Task and question trackingsection. IfCLAUDE.mdexists and does not already contain that section, append the same block there too.
## Task and question tracking
This project uses `docs/tasks/` as a lightweight repo convention for work items and open decisions. Use the `/opentasks` skill to manage it.
- When planning or breaking down work, record concrete steps as tasks (`/opentasks new task <title>`) and open decisions as questions (`/opentasks new question <title>`).
- Keep tasks sized for one focused agent session or one coherent PR. Split work with multiple outputs, owners, or unresolved decisions.
- Use questions for unresolved decisions, ADRs for durable decisions, and tasks for execution; link ADR-derived tasks back to the ADR in `links:`.
- Keep status current: mark items `doing` when you start, `blocked` when waiting, `done` when complete.
- `/opentasks start <item>` claims a task and begins the work in the same turn; `/opentasks claim <item>` records the claim (`claimed_by: <who> @ <where>`) without starting. Claims are attribution, not locks.
- Never create task or question files manually — always go through `/opentasks` to keep the index in sync.
new task <title>
Create a new task file.
- Find the next task number N: scan existing
t<N>-*.mdfiles and task frontmatterid: T<N>, take max N + 1 (start at 1 if none exist). Task IDs are monotonic and never reused. - Generate a kebab-case slug from the title (ASCII, lowercase, hyphens; strip accents, replace spaces with hyphens).
- Check task size before creating it. If the title or context implies multiple outputs, multiple owners, unresolved decisions, or "and then" sequencing, split it into smaller tasks or create a question for the unresolved decision first.
- If
docs/tasks/t<N>-<slug>.mdalready exists, abort and tell the user the file exists — suggest they pick a different title or run/opentasks statusto see the existing item. - Determine the deliverable bucket from context or ask the user. If the title or context signals urgency or explicit ordering, also set
priority: p1(do first) orpriority: p3(can wait); otherwise omit the field — absent meansp2. - If the task comes from an ADR, include the ADR path in
links:. If the work waits on other tracked tasks, list their IDs independs_on:. - Write
docs/tasks/t<N>-<slug>.mdwith this exact structure:
---
status: todo
type: task
id: T<N>
deliverable: <D1|D2|ops|…>
created: <YYYY-MM-DD>
links: []
---
# T<N>. <Title>
## Objective
<One or two sentences — what this is and why it matters.>
## What we need to extract / do
<Concrete bullets describing the actual work.>
## Done when
- <An independently-checkable criterion — a command, a contract, or an observable behavior, in whatever form the repo supports; not a restatement of the work. For security-relevant work, include the adversarial/negative case (input rejected, request blocked), not only the success path.>
## Output
<What gets produced and where it feeds into. Write "none" if the task produces no tracked artifact.>
## Dependencies
<What must exist first.>
- For ADR-derived tasks, replace
links: []with a YAML list containing the ADR path. - Add a line to
TASK_INDEX.mdunder the correct## <Deliverable>group:- [ ] [T<N>. <Title>](t<N>-<slug>.md) — \todo`Forp1andp3tasks, append the priority tag after the status: `` —todop1` ``.
new question <title>
Create a new question file.
- Find the next question number N: scan existing
q<N>-*.mdfiles, take max N + 1 (start at 1 if none exist). - Generate a kebab-case slug from the title.
- Ask the user for
ownerif not clear from context (who needs to answer — a person or role). - Write
docs/tasks/q<N>-<slug>.md:
---
status: todo
type: question
owner: <name-or-role>
created: <YYYY-MM-DD>
---
# Q<N>. <The question, phrased as a question>
**Why it matters:** <impact on design / scope>
- Branch A → consequence A.
- Branch B → consequence B.
**Still open:** <what remains unclear>
- Add a line to
TASK_INDEX.mdunder## Open questions, sub-grouped by owner:- [ ] [Q<N>. <Title>](q<N>-<slug>.md) — \todo``
claim <item>
Record that someone is picking a task up, without beginning the work — e.g. reserving it for a later session, another checkout, or another person.
- Resolve
<item>and open the matching file. - If the file has
type: questionin frontmatter, abort and tell the user: questions don't usedoingstatus — use/opentasks blockto flag as waiting, or/opentasks doneto record the answer. - If
status: done, abort and tell the user to run/opentasks reopen <item>first. - Change
status: todoorstatus: blocked→status: doingin frontmatter. If it is alreadydoing, leave it as-is. - Add
started: <YYYY-MM-DD>to frontmatter directly afterstatusif absent. Do not duplicate or overwrite an existingstarted:. - Set
claimed_by: <who> @ <where>in frontmatter —<who>is the agent or person claiming the task (e.g.claude-code,luisa),<where>is the host, checkout, or session it is running in. If the task is alreadydoingwith a differentclaimed_by, overwrite it and call out the takeover in your reply — a claim is attribution, not a lock; never refuse on the basis of an existing claim. - Announce the claim in your reply, e.g. "Claimed T4 as claude-code on lu-macbook."
- If a
## Blockersection is present and the blocker is no longer relevant, remove it or add a short resolved note. - Update the index line: replace the current status tag with
`doing`and remove any(waiting on ...)suffix.
start <item>
Claim the task, then begin working on it in the same turn. start = claim + execution; use claim when the work should not begin yet.
- Perform every step of
claim <item>above. - Then begin executing the task immediately — do not stop after announcing the claim. Read the task body and carry out
## What we need to extract / do, working toward the## Done whencriteria. - If execution hits a blocker, a missing dependency, or an unresolved decision, record it (
block <item>, or a new question) and report what is needed rather than silently stopping. - If the
## Done whencriteria are met within the session, close the task via thedone <item>flow.
block <item> [reason]
- Resolve
<item>and open the matching file. - If
status: done, abort and tell the user to run/opentasks reopen <item>first. - Change status →
status: blockedin frontmatter. If it is alreadyblocked, leave it as-is. - Add or update a single
## Blockersection in the body explaining what's being waited on. If no reason was provided and it is not obvious from context, ask for the blocker. - Update the index line: replace the current status tag with
`blocked`and append(waiting on <reason>)if a reason was given.
done <item>
- Resolve
<item>and open the matching file. - If the item is already
done, leave existing answer/output/closed fields unchanged unless the user explicitly asks to correct them, then skip to theTASK_INDEX.mdupdate. - Before editing, validate the closure:
- If it's a question: if the answer is not clear from context, ask for it before closing.
- If it's a task: check the
## Done whensection. If the criteria are clearly unmet or ambiguous, stop and report what remains unless the user explicitly asked to close it anyway.
- Set
status: done, addclosed: <YYYY-MM-DD>to frontmatter if absent, and do not duplicate an existingclosed:. - If it's a question: add the answer inline in the body with date and source. Do not replace the question text.
- If it's a task that produced a tracked artifact: add or update
output: <path>in frontmatter. Omitoutput:entirely if the task produced no tracked artifact. - In
TASK_INDEX.md:- Flip
[ ]→[x]on the item's line. - Replace status tag with
`done`. - For tasks with an output: append
→ <output-path>. - For questions: move the line to the
**Answered (history):**sub-group under## Open questions.
- Flip
reopen <item>
Reopen a previously closed item.
- Resolve
<item>and open the matching file. - Set
status: todoin frontmatter. - Remove the
closed:field from frontmatter. For tasks, also removeoutput:because the prior output is no longer the current completion artifact. Leavestarted:in place if present — it records prior work. - In
TASK_INDEX.md:- Flip
[x]→[ ]on the item's line. - Replace
`done`with`todo`. - Remove any
→ output-pathsuffix from the line. - For questions: move the line back from
**Answered (history):**to the active sub-group under## Open questions.
- Flip
list [filter]
Read docs/tasks/ and print a filtered view. Accepts one optional argument:
| Filter | What it shows |
|---|---|
| (none) | All non-done items, grouped by deliverable / owner |
todo / doing / blocked / done | Items with that exact status |
<deliverable> (e.g. D1, ops) | All items in that deliverable bucket |
questions | All question files regardless of status |
p1 / p2 / p3 | Tasks with that priority (absent counts as p2) |
Output format: same grouped list style as the index — one item per line with checkbox and status tag. Print a count summary at the bottom.
next [deliverable]
Recommend the next task to pick up — answers "what should I work on?" deterministically. Read-only: it changes no files and claims nothing.
- Read frontmatter from every task file. If a deliverable argument is given (e.g.
next D1), consider only tasks in that bucket. - Collect the ready tasks:
status: todowith every ID independs_ondone(see Dependencies and readiness). - Pick the highest-priority ready task (
p1beforep2beforep3; absent counts asp2). Break ties by lowest task number. - Report the pick: ID, title, file, and why it was chosen — its priority, which dependencies are satisfied, and whether it is auto-eligible (
autonomy: autowith no openblocked_by) or needs a human. List the runners-up briefly, one line each, in the same priority-then-number order. Suggest/opentasks start T<N>to claim it and begin, or/opentasks claim T<N>to just reserve it. - If no task is ready, say so, and show the highest-priority non-ready open task (same ordering) with what blocks it: its unmet
depends_onIDs with their statuses, or its## Blockersection if it isblocked. If there are no open tasks at all, say so.
graph [write]
Visualize the task dependency graph from depends_on as a Mermaid flowchart. GitHub renders Mermaid natively. Read-only unless write is given.
- Read frontmatter from every task file:
id,status,depends_on, and the title from the# T<N>.heading. - If no task has a non-empty
depends_on, print "Nodepends_onrelationships found — nothing to graph." and stop. Never emit an empty diagram. - Build a fenced
```mermaidblock:- First line:
graph TD. - Include only tasks that appear on either side of a dependency edge; leave unconnected tasks out to keep the diagram readable.
- One node per included task:
T5["T5. <Title>"]:::<status>— always double-quote the label and strip backticks and double quotes from the title. - One edge per dependency, pointing from prerequisite to dependent:
depends_on: [T2]on T5 emitsT2 --> T5. - A
depends_onID with no matching task file still gets a node, labelledT9["T9 (missing)"]:::missing—syncandstatusreport it as a mismatch.
- First line:
- Style nodes by status by appending these classDefs at the end of the block — done greyed out, doing highlighted, blocked marked with a dashed red border:
classDef todo fill:#ffffff,stroke:#495057
classDef doing fill:#fff3bf,stroke:#f59f00,stroke-width:2px
classDef blocked fill:#ffe3e3,stroke:#e03131,stroke-dasharray: 5 5
classDef done fill:#e9ecef,stroke:#adb5bd,color:#868e96
classDef missing fill:#ffffff,stroke:#e03131,stroke-dasharray: 2 2,color:#e03131
- Output destination:
- Default: print the Mermaid block to the user. No file is touched.
graph write: also write the block intoTASK_INDEX.mdunder a## Dependency graphsection at the end of the file, replacing that section if it already exists. Once the section exists,syncregenerates it on every run; delete the section to stop maintaining it.
sync
Rebuild TASK_INDEX.md from scratch by reading all files in docs/tasks/.
-
Read frontmatter from every
*.mdfile exceptREADME.mdandTASK_INDEX.md. -
Group
type: taskfiles bydeliverable; grouptype: questionfiles byowner. Prefer the taskidfield for labels and sorting; fall back to the filename only for legacy task files. -
For backward compatibility, treat files with no
typeand adeliverableas tasks, but report them as frontmatter mismatches. Also report task files missingid: T<N>as legacy task files that should be migrated, and reportpriorityvalues outsidep1/p2/p3as mismatches. Validatedepends_on: unknown task IDs, self-references, and cycles are mismatches. Validateblocked_by: an unknown question ID is a mismatch. Validateautonomy: a value other thanauto/humanis a mismatch, as isautonomy: autoon a task with an unansweredblocked_by. -
Emit the full index in the format defined in §INDEX.
-
Frontmatter is the source of truth — derive, never preserve: discard the old index content entirely and regenerate every section from frontmatter. Curated views are kept by regenerating them, not by honoring hand-edits, so they cannot drift:
## Dependency graph(created bygraph write) — regenerate with the rules fromgraphwhen the section is present. This also encodes execution ordering (prerequisite → dependent), so no manual "execution order" section is ever needed.## Automation— when the section is present, regenerate it as the list of auto-eligible tasks (autonomy: auto, ready, no openblocked_by). The auto/human split is derived fromautonomy, never hand-maintained.
A derived section is opt-in: add the bare header once and
syncmaintains it on every run; delete the header to stop. If genuinely manual prose must live in the index, put it in a single region delimited by<!-- manual:start -->and<!-- manual:end -->, whichsyncpreserves verbatim; everything outside such a region is regenerated.
migrate
Upgrade a legacy docs/tasks/ folder to the current convention in place. Idempotent — running it on an up-to-date folder changes nothing.
- Read every
*.mdfile exceptREADME.mdandTASK_INDEX.md. - For each file, apply only the upgrades it is missing:
- No
typebut adeliverable→ addtype: task. Notypebut anowner→ addtype: question. Neither → report the file as ambiguous; do not guess. - Task missing
id:→ takeT<N>from at<N>-*filename if present; otherwise allocate the next free number (monotonic, never reused). - Task file not named
t<N>-<slug>.md→ rename it to match itsid(usegit mvin a git repo). - Task missing
links:→ addlinks: [].
- No
- Run
syncto rebuild the index. - Report every change made, file by file. If nothing needed upgrading, say so.
When a future convention change affects existing files, its upgrade steps must be added to this operation in the same PR (see CONTRIBUTING).
status (default when no argument given)
Read TASK_INDEX.md (or scan docs/tasks/ if the index is absent) and report:
- Count of items by status: todo / doing / blocked / done.
- Count of auto-eligible tasks (
autonomy: auto, ready, and no openblocked_by). - All
doingandblockeditems with their blockers. - Any frontmatter/index mismatches spotted, including missing
type, invalid statuses, questions markeddoing, tasks missingid, tasks missingdeliverable, questions missingowner, duplicate task IDs, duplicate question numbers, malformedlinks, invalidpriorityvalues, invaliddepends_onreferences (unknown IDs, self-references, cycles),doingtasks whose dependencies are notdone, invalidblocked_byreferences (unknown question IDs), invalidautonomyvalues (anything other thanauto/human), tasks markedautonomy: autowith an unansweredblocked_by, and stale index lines.
File naming rules
- Task slugs:
t<N>-<short-slug>. Examples:t1-llm-shortlist,t8-extract-analysis-scripts. - Question slugs:
q<N>-<short-slug>. Examples:q1-classification-rubric,q7-template-wording. - All filenames are lowercase ASCII — strip accents, replace spaces with hyphens.
- Task and question numbers are monotonic across the project lifetime. Never reuse a number.
Status semantics
| Status | Tasks | Questions |
|---|---|---|
todo | Not started | Ready to ask / discuss |
doing | In progress | Not valid — use block or done directly |
blocked | Waiting on dependency | Waiting for an answer |
done | Completed | Answered |
Dependencies and readiness
Tasks may declare machine-readable dependencies in depends_on: — a YAML list of task IDs, e.g. depends_on: [T3, T7]. The ## Dependencies body section stays free-text context; depends_on is the normative list.
A task is ready when status: todo and every task in depends_on is done. The next operation picks among ready tasks.
depends_on tracks prerequisite tasks; the separate optional blocked_by: Q<N> points at an open question (a decision) that gates the task. A task with an unanswered blocked_by stays autonomy: human and is not eligible for unattended execution.
sync and status validate depends_on: unknown task IDs, self-references, and dependency cycles are frontmatter mismatches. status also flags doing tasks whose dependencies are not all done.
Autonomy and unattended execution
autonomy: marks whether an agent or driver may execute a task without a human in the loop:
autonomy: auto— safe to pick up and run unattended.autonomy: human— needs a person: an open decision, an audit, or something too large or risky.humanis the default when the field is absent.
A task is auto-eligible only when all of these hold:
autonomy: auto;status: todoand it is ready (everydepends_onisdone);- no open decision gates it (
blocked_byabsent, or its question isdone); - its
Done whenis concrete and independently checkable (see task sizing and agent behavior) — including the adversarial/negative assertion for security-relevant tasks.
The first three conditions are structural and checked by sync/status; the last is a judgment the task's author makes before setting autonomy: auto. status reports the count of auto-eligible tasks, and next notes whether its recommended task is auto-eligible. Setting autonomy: auto on a task with an unanswered blocked_by is a mismatch — resolve the decision or keep it human.
Frontmatter reference
Tasks:
---
status: todo # todo | doing | blocked | done
type: task
id: T<N> # stable task identifier, monotonic and never reused
deliverable: D2 # project-specific bucket
created: YYYY-MM-DD
links: [] # optional related URLs or repo paths
priority: p2 # optional: p1 | p2 | p3; treated as p2 when absent
autonomy: human # optional: auto | human; absent means human (needs a person)
depends_on: [] # optional list of task IDs this task waits on, e.g. [T3, T7]
verify: <command> # optional: how to confirm completion independently; form depends on the repo
blocked_by: Q<N> # optional: an open question that gates this task; keep autonomy: human until it closes
started: YYYY-MM-DD # added by `claim`/`start`; kept on reopen as historical record
claimed_by: who @ where # added by `claim`/`start`; attribution, not a lock
closed: YYYY-MM-DD # only when status = done; removed by `reopen`
output: path/to/file.md # only if the task produced a tracked artifact
---
Questions:
---
status: todo # todo | blocked | done (never doing)
type: question
owner: <name-or-role>
created: YYYY-MM-DD
closed: YYYY-MM-DD # only when status = done; removed by `reopen`
---
§README — what docs/tasks/README.md must cover
Write the README in the same language as the project's documentation. It must include:
- One-paragraph intro: this folder is a lightweight repo convention for both execution tasks and open questions using flat markdown + YAML frontmatter; item type is distinguished by the
typefrontmatter field. - How it works: one file per item; frontmatter is the source of truth;
TASK_INDEX.mdis a derived view; tasks have stableT<N>identifiers. - The four status values and what they mean for tasks vs questions (see table above).
- Type conventions: task vs question; what
owneris for; whatlinksis for; the optionalpriorityfield (p1/p2/p3, defaultp2); the optionaldepends_onlist and the readiness rule (a task is ready whentodoand all dependencies aredone); the optionalverify:field (how to confirm completion independently, form repo-dependent); the optionalblocked_by:field (a question id that gates the task); the optionalautonomy:field (auto/human, defaulthuman) and the bar a task clears to beauto-eligible. - Task sizing guidance: one focused agent session or one coherent PR; split work with multiple outputs, owners, unresolved decisions, or "and then" sequencing.
Done whenmust be independently checkable rather than a restatement of the work, and must include the adversarial/negative assertion for security-relevant tasks. - Agent creation guidance: create tasks for user-approved plans, deferred follow-up work, blockers, ADR implementation work, and handoffs; do not create tasks merely to describe same-turn work; record the source (report path, PR, or finding id) in
links:when a task is spawned from a review or finding. - ADR and decision flow:
Q<N> -> ADR -> T<N>, plus the reverse path when a task uncovers a durable decision; ADR-derived tasks link back to the ADR inlinks:. - The full task body template as a fenced markdown block.
- The full question body template as a fenced markdown block.
- Workflow: create → claim/start → block → close → reopen, with the exact frontmatter changes at each step, including that
startclaims and then begins the work whileclaimonly records the claim. - A note that closed files are kept as history — never delete.
- A short note that this is not a task manager, Kanban board, daemon, database, sync service, or UI.
§INDEX — TASK_INDEX.md format
> Frontmatter is the source of truth. This index is a derived view — if they disagree, read the individual .md files.
## D1 — <Deliverable name>
- [ ] [T1. <Title>](t1-slug.md) — `todo`
- [ ] [T2. <Title>](t2-slug.md) — `blocked` (waiting on client data)
- [x] [T3. <Title>](t3-slug.md) — `done` → path/to/output.md
## D2 — <Deliverable name>
…
## Open questions
**For <person A>:**
- [ ] [Q1. <Question>](q1-slug.md) — `todo`
**For <person B>:**
- [ ] [Q2. <Question>](q2-slug.md) — `blocked`
**Answered (history):**
- [x] [Q3. <Question>](q3-slug.md) — `done`
Rules:
[x]only whenstatus: done. All other statuses use[ ](includingblocked).- Task lines include the stable task ID in the visible label, e.g.
T4. Implement cache. blockeditems may have a parenthetical explanation:(waiting on client data).- Non-default priorities appear as a tag after the status:
`todo` `p1`. Defaultp2is never shown. - Append
→ path/to/outputfordonetasks that produced a tracked artifact. - Closed files are never deleted — they remain in the folder and in the index as history.
- An optional
## Dependency graphsection (created bygraph write) may close the file;syncregenerates it fromdepends_onfrontmatter, which also encodes execution ordering. - An optional
## Automationsection may list the auto-eligible tasks;syncregenerates it fromautonomyfrontmatter when present. Both views are derived — never hand-edit them. Any unavoidable manual prose lives in a single<!-- manual:start -->/<!-- manual:end -->region thatsyncpreserves verbatim.
What ships with it: 42 files
77.8 KB alongside SKILL.md, 1 of them executable
agents/
- openai.yaml174 B
docs/
- adr/0001-agent-self-dispatch.md3.0 KB
- adr/0002-skill-md-canonical.md1.5 KB
- adr/0003-convention-migration.md1.8 KB
- feedback/multi-agent-automation-feedback.md5.7 KB
- tasks/q1-tasks-on-always-pushed-branch.md2.2 KB
- tasks/README.md7.1 KB
- tasks/t10-document-skill-updates.md1.1 KB
- tasks/t11-add-autonomy-field.md1.9 KB
- tasks/t12-verifiable-done-when.md2.3 KB
- tasks/t13-add-blocked-by-field.md1.5 KB
- tasks/t14-sync-derive-sections.md1.6 KB
- tasks/t15-document-review-provenance.md1.1 KB
- tasks/t1-add-priority-field.md1.1 KB
- tasks/t2-add-depends-on-field.md1.1 KB
- tasks/t3-add-next-operation.md1.1 KB
- tasks/t4-add-claimed-by-attribution.md1.3 KB
- tasks/t5-add-graph-operation.md1.1 KB
- tasks/t6-add-migrate-operation.md1.2 KB
- tasks/t7-add-validation-script.md1.3 KB
- tasks/t8-add-examples-folder.md1.1 KB
- tasks/t9-canonicalize-skill-md.md1.2 KB
- tasks/TASK_INDEX.md2.9 KB
examples/
- docs/adr/0001-use-eleventy.md682 B
- docs/tasks/q1-care-schedules-per-region.md492 B
- docs/tasks/q2-css-approach.md561 B
- docs/tasks/t1-scaffold-site-with-eleventy.md737 B
- docs/tasks/t2-build-plant-index-page.md715 B
- docs/tasks/t3-import-care-schedules.md818 B
- docs/tasks/t4-add-search.md694 B
- docs/tasks/t5-set-up-deploy-previews.md496 B
- docs/tasks/TASK_INDEX.md870 B
- AGENTS.md1.3 KB
- CHANGELOG.md2.6 KB
- CODE_OF_CONDUCT.md1016 B
- CONTRIBUTING.md2.3 KB
- .editorconfig188 B
- .gitignore50 B
- LICENSE1.0 KB
- README.md9.1 KB
2 more files not listed here. See all 42 in the repository.