@jesdi/skills 0.0.16 → 0.0.18
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +7 -7
- package/package.json +1 -1
- package/skills/implement-spec/LICENSE +21 -0
- package/skills/implement-spec/SKILL.md +55 -0
- package/skills/implement-spec/agents/openai.yaml +5 -0
- package/skills/red-team-data-model/SKILL.md +50 -0
- package/skills/to-openspec/SKILL.md +64 -0
- package/skills/to-openspec/templates/design.md +19 -0
- package/skills/to-openspec/templates/proposal.md +18 -0
- package/skills/to-openspec/templates/spec.md +22 -0
- package/skills/to-openspec/templates/tasks.md +9 -0
- package/skills/to-tickets/SKILL.md +11 -1
- package/skills-manifest.json +21 -3
package/README.md
CHANGED
|
@@ -70,13 +70,13 @@ versions; `npx skills update` refreshes them.
|
|
|
70
70
|
|
|
71
71
|
### Forks (the one exception)
|
|
72
72
|
|
|
73
|
-
`to-spec`, `to-tickets`, `prototype` and `wizard` are
|
|
74
|
-
mattpocock/skills originals, vendored under
|
|
75
|
-
MIT `LICENSE` and a header naming the
|
|
76
|
-
names on purpose, so **never install
|
|
77
|
-
alongside them** (`npx skills add
|
|
78
|
-
deselect those
|
|
79
|
-
lists them under `forks`.
|
|
73
|
+
`implement-spec`, `to-spec`, `to-tickets`, `prototype` and `wizard` are
|
|
74
|
+
modified copies of the mattpocock/skills originals, vendored under
|
|
75
|
+
`skills/<name>/` with the upstream MIT `LICENSE` and a header naming the
|
|
76
|
+
upstream commit. They keep their upstream names on purpose, so **never install
|
|
77
|
+
the upstream copies of those five names alongside them** (`npx skills add
|
|
78
|
+
mattpocock/skills` installs the whole set — deselect those five, or uninstall
|
|
79
|
+
them afterwards). `external-skills.json` lists them under `forks`.
|
|
80
80
|
|
|
81
81
|
### The box set
|
|
82
82
|
|
package/package.json
CHANGED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 Matt Pocock
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: implement-spec
|
|
3
|
+
description: "Implement a specification in code."
|
|
4
|
+
disable-model-invocation: true
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
<!--
|
|
8
|
+
Modified copy of https://github.com/mattpocock/skills/tree/5b15a47f2d7150f545fbcacbfe381787fc0230dc/skills/in-progress/implement-spec
|
|
9
|
+
(in-progress, after mattpocock-skills v1.2.3). Copyright (c) 2026 Matt Pocock, MIT — see LICENSE.
|
|
10
|
+
Changes: a model tier per subagent; a context-isolated test-writer commits
|
|
11
|
+
locked acceptance tests at the ticket's Seam, the implementer turns them green
|
|
12
|
+
with /tdd and reports to a contract; per-ticket review before merge, fix loop
|
|
13
|
+
capped at 4 rounds with escalation; a ruling ledger and four stop conditions;
|
|
14
|
+
full suite after each merge; final /review-diff on the most capable model, one
|
|
15
|
+
fixer; closes tickets only if they are issues. Review loop and ledger adapt
|
|
16
|
+
superpowers' subagent-driven-development (obra/superpowers, MIT).
|
|
17
|
+
-->
|
|
18
|
+
|
|
19
|
+
You have been provided a spec. This spec should have tickets associated with it, describing how to implement the spec.
|
|
20
|
+
|
|
21
|
+
The goal is a PR which implements the entire spec on a single branch.
|
|
22
|
+
|
|
23
|
+
The tickets are not a list of steps. They are a **task graph** with blocking relationships between them. This means there is always a **frontier** of tickets which are ready to be grabbed.
|
|
24
|
+
|
|
25
|
+
Communication to and from subagents should be sparse. Communicate primarily through **context pointers**: to the spec, tickets, research notes, and previous commits. Don't duplicate information already available via pointers.
|
|
26
|
+
|
|
27
|
+
Run ticket subagents in the background where possible for **maximum concurrency**.
|
|
28
|
+
|
|
29
|
+
**Name the model on every dispatch.** Omitted, it inherits yours. Exploration, test-writer, reviewer: mid tier (reviewer higher for risky diffs). Implementer: mid tier; cheapest when the ticket carries the complete code; most capable for design judgment or broad codebase work. Merger: cheapest. Escalations: one tier above the agent that got stuck. Final reviewer: most capable.
|
|
30
|
+
|
|
31
|
+
**Rule, don't stall.** Keep a **ledger** file in the notes directory: every decision as `Ruling: <what> — <why> — <cost if wrong>`, and each ticket's state, so you can resume after compaction. Don't check in between tickets. Stop and ask only for: an irreversible or destructive operation, a security-sensitive action, a side effect outside the worktrees (a push to a shared branch, a publish), or a spec so broken that every path forward is a guess.
|
|
32
|
+
|
|
33
|
+
## Steps
|
|
34
|
+
|
|
35
|
+
1. Read the spec and tickets. Read enough to understand the task graph.
|
|
36
|
+
|
|
37
|
+
2. Create a notes directory outside the repo, readable by all subagents, and start the ledger there. (optional) An **exploration subagent** saves its notes on relevant code and docs there, so implementers focus on implementation.
|
|
38
|
+
|
|
39
|
+
3. Create a branch, and a draft PR. If the spec and tickets are issues, mark the PR as 'closing' them.
|
|
40
|
+
|
|
41
|
+
4. Each ticket gets its own worktree and branch. For a ticket with behavioral criteria, a **test-writer subagent** goes first. It sees ONLY the spec, the ticket, CONTEXT.md/ADRs and the public interface of the ticket's **Seam** line (pointers, not summaries), never the implementer's plan or code. It writes one black-box acceptance test per criterion through that interface (defining the interface if it doesn't exist yet), confirms each fails for the right reason (missing behavior, not an import or syntax error), commits them red, and reports the SHA and files. Those files are now **locked**. A ticket with no behavioral criteria (Seam: `none — refactor`) skips this: its existing tests are the contract, unmodified.
|
|
42
|
+
|
|
43
|
+
5. An **implementer subagent** starts from that commit and makes the locked tests green, using /tdd vertical slices for anything internal. It never edits locked files and never dispatches subagents. It reports: status (DONE, DONE_WITH_CONCERNS, NEEDS_CONTEXT or BLOCKED), commits, red→green evidence for locked tests and its own slices, files touched, concerns. If a locked test contradicts the spec or ticket, it reports BLOCKED with evidence; you rule, and either send the test-writer a correction or overrule the implementer. Handle any BLOCKED by changing something: more context, a stronger model, a split ticket, or a ruling. Never retry unchanged.
|
|
44
|
+
|
|
45
|
+
6. On DONE, a **reviewer subagent** checks the diff against the ticket and spec, then for quality. It also checks that `git diff <test-writer-sha>..HEAD -- <locked files>` is empty and that every criterion has a locked test. Critical or Important findings start a fix loop of at most 4 rounds, each a fix plus a re-review scoped to that fix: rounds 1-2 resume the implementer; rounds 3-4 go to a fresh implementer one tier up. After round 4, rule on each open finding in the ledger and move on. Minor findings go to the ledger for the final review.
|
|
46
|
+
|
|
47
|
+
7. Once a ticket passes review, a **merger subagent** merges it to the PR branch and runs the full test suite. If it fails, an implementer fixes the PR branch before the next merge.
|
|
48
|
+
|
|
49
|
+
8. If this changes the **frontier** of available tickets, start the next tickets. This allows for maximum concurrency.
|
|
50
|
+
|
|
51
|
+
9. Once all tickets are complete, a reviewer on the most capable model runs /review-diff on the PR branch, given the ledger's minor findings and rulings. One **implementer subagent** fixes every finding, then re-review that fix once. Rule on anything left.
|
|
52
|
+
|
|
53
|
+
10. Mark the PR as ready for review. List every ruling from the ledger in your final message.
|
|
54
|
+
|
|
55
|
+
11. Clean up all ticket worktrees.
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: red-team-data-model
|
|
3
|
+
description: >-
|
|
4
|
+
Attack a proposed or existing data model for the ways it breaks under real
|
|
5
|
+
conditions — concurrency, time windows, money, permissions — without
|
|
6
|
+
proposing a redesign. Use right after sketching a data model, before
|
|
7
|
+
writing the spec, so the top failure scenarios shape the spec's
|
|
8
|
+
requirements and tests instead of getting discovered mid-build. Trigger on
|
|
9
|
+
"red-team my data model", "what breaks in this schema", or "/red-team".
|
|
10
|
+
---
|
|
11
|
+
|
|
12
|
+
# Red-team the data model
|
|
13
|
+
|
|
14
|
+
## Rule
|
|
15
|
+
|
|
16
|
+
Don't improve or redesign. Attack it. The output is a list of ways it fails, not a fix.
|
|
17
|
+
|
|
18
|
+
## Prompt
|
|
19
|
+
|
|
20
|
+
Given the tables/fields (from `design.md` or a sketch), produce:
|
|
21
|
+
|
|
22
|
+
**Top 5 failure scenarios**, ranked worst-consequence-first. Each one:
|
|
23
|
+
|
|
24
|
+
- **Table/field** — exactly which part of the model is implicated.
|
|
25
|
+
- **Scenario** — the concrete sequence of events that breaks it (two users, two
|
|
26
|
+
requests, a clock, a race — be specific, not "concurrency issues could
|
|
27
|
+
occur").
|
|
28
|
+
- **Consequence** — what actually goes wrong in business terms (double-sold
|
|
29
|
+
stock, a refund that never happens, a stranger seeing another customer's
|
|
30
|
+
order, money debited twice).
|
|
31
|
+
|
|
32
|
+
## Focus areas, in this order
|
|
33
|
+
|
|
34
|
+
1. **Concurrency** — two actors racing the same row (two checkouts, one unit
|
|
35
|
+
of stock; two edits, one record).
|
|
36
|
+
2. **Time windows** — expiry, deadlines, "usually ready within X", reminder
|
|
37
|
+
timing, what happens exactly at the boundary and one tick after it.
|
|
38
|
+
3. **Money** — partial payments, refund correctness, rounding, double-charge
|
|
39
|
+
on retry, what happens if a webhook never arrives.
|
|
40
|
+
4. **Permissions** — who can see or mutate what; staff vs. customer vs. owner
|
|
41
|
+
boundaries; what an authenticated-but-wrong-role request can still reach.
|
|
42
|
+
|
|
43
|
+
## What NOT to do
|
|
44
|
+
|
|
45
|
+
- Don't suggest schema changes, indexes, or constraints — that's the design
|
|
46
|
+
session's job, after this list exists.
|
|
47
|
+
- Don't hedge with "it depends" — pick the worst plausible interpretation and
|
|
48
|
+
state its consequence.
|
|
49
|
+
- Don't produce more than 5. Rank and cut; the top failure matters more than
|
|
50
|
+
a complete list.
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: to-openspec
|
|
3
|
+
description: >-
|
|
4
|
+
Turn settled discovery notes and a sketched data model into a spec folder
|
|
5
|
+
in openspec shape (proposal, spec, design, tasks) under specs/<slug>/.
|
|
6
|
+
Runs in two stages with a human review between them. No interview, just
|
|
7
|
+
synthesis of decisions already made. Trigger on "write the spec",
|
|
8
|
+
"to-openspec", or "/to-openspec <slug> [stage 2]".
|
|
9
|
+
---
|
|
10
|
+
|
|
11
|
+
# To openspec
|
|
12
|
+
|
|
13
|
+
Synthesize, don't decide. Every decision comes from `discovery.md`, the design sketch, or the
|
|
14
|
+
conversation. If one is missing, list it under **Open questions** at the end of your reply
|
|
15
|
+
instead of inventing it. Never invent prices, policies, deadlines, or permissions.
|
|
16
|
+
|
|
17
|
+
## Input
|
|
18
|
+
|
|
19
|
+
- `<slug>`: kebab-case, becomes `specs/<slug>/`. Derive one from the goal if not given.
|
|
20
|
+
- Sources: `discovery.md` (verdicts, non-goals, open questions), the data-model sketch, and the
|
|
21
|
+
conversation.
|
|
22
|
+
- Shape: read every file in the repo's `specs/_template/`, or in this skill's `templates/` when
|
|
23
|
+
the repo has none. Keep the headings exactly; write "None." rather than dropping a section.
|
|
24
|
+
- Check command: the one the repo documents (`make check`, or what AGENTS.md names).
|
|
25
|
+
|
|
26
|
+
## Stage 1: what and why
|
|
27
|
+
|
|
28
|
+
Write `specs/<slug>/proposal.md` and `specs/<slug>/spec.md`.
|
|
29
|
+
|
|
30
|
+
- **Goal** is one or two sentences. Every later task links back to it.
|
|
31
|
+
- **Non-goals** carry over every "later" or "never" verdict from discovery.
|
|
32
|
+
- **Requirements** cover the v1 slice only: the smallest set that meets the goal. Each one is
|
|
33
|
+
testable and maps to at least one scenario.
|
|
34
|
+
- **Scenarios** are Given/When/Then with concrete values (quantities, amounts, times, roles).
|
|
35
|
+
Every invariant (overselling, expiry, refund permissions, and so on) gets a scenario for the
|
|
36
|
+
boundary and one for the violation.
|
|
37
|
+
|
|
38
|
+
Then **stop**. Print the requirement list and any open questions so the human can cut or correct
|
|
39
|
+
the spec before the design is written. Don't write code.
|
|
40
|
+
|
|
41
|
+
## Stage 2: how
|
|
42
|
+
|
|
43
|
+
Run only when asked (for example "/to-openspec <slug> stage 2"), after the human has reviewed
|
|
44
|
+
stage 1. Re-read `proposal.md` and `spec.md` first; the human may have edited them.
|
|
45
|
+
|
|
46
|
+
1. Run the `red-team-data-model` skill against the data model. Print the top 5; don't write them
|
|
47
|
+
to a file.
|
|
48
|
+
2. Write `specs/<slug>/design.md`:
|
|
49
|
+
- **Decisions**: one line each with its tradeoff. Include the ones the red-team findings force.
|
|
50
|
+
- **Data model**: every invariant a DB constraint can enforce (`CHECK`, `UNIQUE`, `NOT NULL`,
|
|
51
|
+
FK, conditional `UPDATE ... WHERE`) goes in the table, not only in app code.
|
|
52
|
+
- **Seams**: the endpoint, function, or command the tests drive through, marked existing or
|
|
53
|
+
new. Prefer one high seam.
|
|
54
|
+
3. Write `specs/<slug>/tasks.md`: vertical slices, each small enough for one commit and one green
|
|
55
|
+
check command. Tests come first in each slice.
|
|
56
|
+
- Every task has its `_Goal:_` line, its **Seam** (one of the seams from `design.md`, precise
|
|
57
|
+
enough to write a black-box test against) and its **Blocked by** (task IDs, or none). That
|
|
58
|
+
makes the list a task graph `implement-spec` can run directly.
|
|
59
|
+
- A slice adds only the tables and columns its own scenarios need, not the whole model up front.
|
|
60
|
+
- No standalone "run the checks" task: every task already ends with the check command green.
|
|
61
|
+
|
|
62
|
+
Print the task list, then **Open questions**: every red-team finding the design leaves
|
|
63
|
+
unresolved, and every input the design assumes but the sources don't provide. Then stop. Don't
|
|
64
|
+
write code.
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
# <Feature title> — Design
|
|
2
|
+
|
|
3
|
+
## Decisions
|
|
4
|
+
|
|
5
|
+
One line each: the decision and its tradeoff.
|
|
6
|
+
|
|
7
|
+
- **<decision>** — <tradeoff, one line>.
|
|
8
|
+
|
|
9
|
+
## Data model
|
|
10
|
+
|
|
11
|
+
Tables/fields touched or added, and the invariants that go in DB constraints (not just app code).
|
|
12
|
+
|
|
13
|
+
| Table | Field | Constraint | Why |
|
|
14
|
+
|---|---|---|---|
|
|
15
|
+
| | | | |
|
|
16
|
+
|
|
17
|
+
## Seams
|
|
18
|
+
|
|
19
|
+
Where tests drive through: module, function, command, or endpoint. Mark each existing or new.
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
# <Feature title>
|
|
2
|
+
|
|
3
|
+
## Why
|
|
4
|
+
|
|
5
|
+
What problem this solves, from the user's perspective. One paragraph.
|
|
6
|
+
|
|
7
|
+
## For whom
|
|
8
|
+
|
|
9
|
+
The actor(s) this serves (e.g. customer, staff, owner).
|
|
10
|
+
|
|
11
|
+
## Goal
|
|
12
|
+
|
|
13
|
+
What "done" looks like for this slice. One or two sentences — this is what every task links back
|
|
14
|
+
to.
|
|
15
|
+
|
|
16
|
+
## Non-goals
|
|
17
|
+
|
|
18
|
+
Explicitly out of scope for this slice, so nobody re-litigates it mid-build.
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
# <Feature title> — Spec
|
|
2
|
+
|
|
3
|
+
## Requirements
|
|
4
|
+
|
|
5
|
+
Numbered, testable requirements. Each one should map to at least one scenario below.
|
|
6
|
+
|
|
7
|
+
1. ...
|
|
8
|
+
|
|
9
|
+
## Scenarios
|
|
10
|
+
|
|
11
|
+
Given/When/Then, one per requirement (or per edge case of a requirement). These are what the
|
|
12
|
+
tests get written from.
|
|
13
|
+
|
|
14
|
+
### Scenario: <name>
|
|
15
|
+
|
|
16
|
+
- **Given** ...
|
|
17
|
+
- **When** ...
|
|
18
|
+
- **Then** ...
|
|
19
|
+
|
|
20
|
+
## Out of scope
|
|
21
|
+
|
|
22
|
+
Carried over from proposal.md's non-goals if relevant to a reader who only opens this file.
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
# <Feature title> — Tasks
|
|
2
|
+
|
|
3
|
+
Each task links to the goal in proposal.md. Work the frontier (tasks whose blockers are done);
|
|
4
|
+
commit per task with its ID.
|
|
5
|
+
|
|
6
|
+
- [ ] **T1** — <task>. _Goal: <one line, why this task serves proposal.md's goal>._
|
|
7
|
+
Seam: <endpoint / function / command from design.md>. Blocked by: none.
|
|
8
|
+
- [ ] **T2** — <task>. _Goal: ..._
|
|
9
|
+
Seam: .... Blocked by: T1.
|
|
@@ -8,7 +8,8 @@ Modified copy of https://github.com/mattpocock/skills/tree/3cca18b368ae95cdbdebb
|
|
|
8
8
|
(mattpocock-skills v1.2.3). Copyright (c) 2026 Matt Pocock, MIT — see LICENSE.
|
|
9
9
|
Changes: tickets always go to `.agent/tickets/<NN>-<slug>.md` (no tracker path);
|
|
10
10
|
numbering is contiguous from 01 in dependency order; acceptance criteria must state
|
|
11
|
-
observable behavior;
|
|
11
|
+
observable behavior; every ticket names its **Seam** (the public interface its
|
|
12
|
+
acceptance tests hit); the approval quiz is skipped when unattended; model
|
|
12
13
|
invocation is allowed.
|
|
13
14
|
-->
|
|
14
15
|
|
|
@@ -51,6 +52,7 @@ When a human is in the loop, present the proposed breakdown as a numbered list.
|
|
|
51
52
|
|
|
52
53
|
- **Title**: short descriptive name
|
|
53
54
|
- **Blocked by**: which other tickets (if any) must complete first
|
|
55
|
+
- **Seam**: the public interface its acceptance tests hit
|
|
54
56
|
- **What it delivers**: the end-to-end behaviour this ticket makes work
|
|
55
57
|
|
|
56
58
|
Ask the user:
|
|
@@ -81,6 +83,8 @@ Do NOT close or modify any parent issue.
|
|
|
81
83
|
|
|
82
84
|
**Blocked by:** the numbers/titles of the tickets that gate this one, or "None (can start immediately)".
|
|
83
85
|
|
|
86
|
+
**Seam:** the public interface the acceptance tests hit (a function, an HTTP route, a CLI command, a config loader…), or `none — refactor`.
|
|
87
|
+
|
|
84
88
|
- [ ] Acceptance criterion 1
|
|
85
89
|
- [ ] Acceptance criterion 2
|
|
86
90
|
|
|
@@ -92,4 +96,10 @@ Every acceptance criterion states **observable behavior**: something a reviewer
|
|
|
92
96
|
|
|
93
97
|
</acceptance-criteria-rule>
|
|
94
98
|
|
|
99
|
+
<seam-rule>
|
|
100
|
+
|
|
101
|
+
Every ticket carries a **Seam** line: the one public interface through which its acceptance criteria are tested, black-box. `implement-spec` hands it to a test-writer that sees nothing else of the code, so name it precisely enough to write a test against, and never an internal helper. A ticket with no behavioral criteria (a pure prefactor or refactor) says `none — refactor`: its existing tests are the contract.
|
|
102
|
+
|
|
103
|
+
</seam-rule>
|
|
104
|
+
|
|
95
105
|
Avoid specific file paths or code snippets: they go stale fast. Exception: if a prototype produced a snippet that encodes a decision more precisely than prose can (state machine, reducer, schema, type shape), inline it and note briefly that it came from a prototype. Trim to the decision-rich parts, not a working demo, just the important bits.
|
package/skills-manifest.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"schemaVersion": 1,
|
|
3
|
-
"generatedAt": "2026-09-
|
|
3
|
+
"generatedAt": "2026-09-24T09:54:20.128Z",
|
|
4
4
|
"skills": [
|
|
5
5
|
{
|
|
6
6
|
"name": "backlog",
|
|
@@ -44,6 +44,12 @@
|
|
|
44
44
|
"hash": "sha256-916ea397cd74d91c4b6060672088b9c54353c915b98bcaef3514815694842e5a",
|
|
45
45
|
"description": "Minimal example skill proving the distribution pipeline works. Responds to \"test my skills setup\" by confirming the skill is loaded."
|
|
46
46
|
},
|
|
47
|
+
{
|
|
48
|
+
"name": "implement-spec",
|
|
49
|
+
"version": "0.1.0",
|
|
50
|
+
"hash": "sha256-95c4889bd41cbb8eb6522cbea5b074779b0964e521e6decbe801d52734921ecb",
|
|
51
|
+
"description": "Implement a specification in code."
|
|
52
|
+
},
|
|
47
53
|
{
|
|
48
54
|
"name": "pr-visual-diff",
|
|
49
55
|
"version": "0.1.0",
|
|
@@ -56,12 +62,24 @@
|
|
|
56
62
|
"hash": "sha256-211e0e116ff6efbc4589ea7264835855b9495ba535f242733af913903fe7707d",
|
|
57
63
|
"description": "Build a throwaway prototype to answer a design question, delivered as one self-contained HTML file. Use when the user wants to sanity-check whether a state model or logic feels right, or explore what a UI should look like."
|
|
58
64
|
},
|
|
65
|
+
{
|
|
66
|
+
"name": "red-team-data-model",
|
|
67
|
+
"version": "0.1.0",
|
|
68
|
+
"hash": "sha256-3c7a00bbb05190a431ea101db79b6e27bbfc6c8b24b14b0fe560a82a201afdb9",
|
|
69
|
+
"description": "Attack a proposed or existing data model for the ways it breaks under real conditions — concurrency, time windows, money, permissions — without proposing a redesign. Use right after sketching a data model, before writing the spec, so the top failure scenarios shape the spec's requirements and tests instead of getting discovered mid-build. Trigger on \"red-team my data model\", \"what breaks in this schema\", or \"/red-team\"."
|
|
70
|
+
},
|
|
59
71
|
{
|
|
60
72
|
"name": "review-diff",
|
|
61
73
|
"version": "0.1.0",
|
|
62
74
|
"hash": "sha256-f1efdffdad0abf536777a3afcc733b2612ed51abad0b1a04d24f280bf2f223d3",
|
|
63
75
|
"description": "Review a branch before merge: first a gate (the repo's check command plus crap-gate), then three independent reviewers in parallel — spec (did we build what was asked, no more, no less), correctness via Codex (races, idempotency, money, time, authz, indexes, N+1, migrations, error paths, test quality) and structure (deep-quality-review). `--quick` runs only spec and correctness, shortened, for a live interview. Use when the user says \"/review-diff\", \"review this branch\", \"review this slice\", \"review before merge\", or before closing out a spec task."
|
|
64
76
|
},
|
|
77
|
+
{
|
|
78
|
+
"name": "to-openspec",
|
|
79
|
+
"version": "0.1.0",
|
|
80
|
+
"hash": "sha256-c3c66a08fe27afa1f530989b77c7b4fd2d6a379cc844a9ca5f55072bede9b64a",
|
|
81
|
+
"description": "Turn settled discovery notes and a sketched data model into a spec folder in openspec shape (proposal, spec, design, tasks) under specs/<slug>/. Runs in two stages with a human review between them. No interview, just synthesis of decisions already made. Trigger on \"write the spec\", \"to-openspec\", or \"/to-openspec <slug> [stage 2]\"."
|
|
82
|
+
},
|
|
65
83
|
{
|
|
66
84
|
"name": "to-spec",
|
|
67
85
|
"version": "0.1.0",
|
|
@@ -70,8 +88,8 @@
|
|
|
70
88
|
},
|
|
71
89
|
{
|
|
72
90
|
"name": "to-tickets",
|
|
73
|
-
"version": "0.1.
|
|
74
|
-
"hash": "sha256-
|
|
91
|
+
"version": "0.1.1",
|
|
92
|
+
"hash": "sha256-4c838fa240c742353f77b3a3c1246a0948140587e81c9bc587f84c648e552bba",
|
|
75
93
|
"description": "Break a spec, plan, or the current conversation into numbered tracer-bullet ticket files under .agent/tickets/, each declaring its blocking edges and acceptance criteria phrased as observable behavior. Use after a spec is approved and before implementation starts."
|
|
76
94
|
},
|
|
77
95
|
{
|