tiny-spec 0.1.0__tar.gz → 0.2.1__tar.gz

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.
Files changed (21) hide show
  1. {tiny_spec-0.1.0 → tiny_spec-0.2.1}/PKG-INFO +20 -12
  2. {tiny_spec-0.1.0 → tiny_spec-0.2.1}/README.md +19 -11
  3. {tiny_spec-0.1.0 → tiny_spec-0.2.1}/pyproject.toml +3 -1
  4. tiny_spec-0.2.1/tiny-spec-breakdown/SKILL.md +92 -0
  5. tiny_spec-0.2.1/tiny-spec-breakdown/templates/BREAKDOWN.template.md +37 -0
  6. {tiny_spec-0.1.0 → tiny_spec-0.2.1}/tiny-spec-build/SKILL.md +3 -2
  7. {tiny_spec-0.1.0 → tiny_spec-0.2.1}/tiny-spec-create/SKILL.md +40 -8
  8. {tiny_spec-0.1.0 → tiny_spec-0.2.1}/tiny-spec-plan/SKILL.md +3 -2
  9. {tiny_spec-0.1.0 → tiny_spec-0.2.1}/tiny-spec-tasks/SKILL.md +3 -2
  10. {tiny_spec-0.1.0 → tiny_spec-0.2.1}/tiny_spec/__init__.py +1 -1
  11. {tiny_spec-0.1.0 → tiny_spec-0.2.1}/tiny_spec/manifest.json +1 -0
  12. {tiny_spec-0.1.0 → tiny_spec-0.2.1}/.gitignore +0 -0
  13. {tiny_spec-0.1.0 → tiny_spec-0.2.1}/LICENSE +0 -0
  14. {tiny_spec-0.1.0 → tiny_spec-0.2.1}/agents/tiny-spec-build-executor.md +0 -0
  15. {tiny_spec-0.1.0 → tiny_spec-0.2.1}/agents/tiny-spec-build-reviewer.md +0 -0
  16. {tiny_spec-0.1.0 → tiny_spec-0.2.1}/tiny-spec-build/templates/memory.template.md +0 -0
  17. {tiny_spec-0.1.0 → tiny_spec-0.2.1}/tiny-spec-create/templates/SPEC.template.md +0 -0
  18. {tiny_spec-0.1.0 → tiny_spec-0.2.1}/tiny-spec-create/templates/constitution.template.md +0 -0
  19. {tiny_spec-0.1.0 → tiny_spec-0.2.1}/tiny-spec-plan/templates/PLAN.template.md +0 -0
  20. {tiny_spec-0.1.0 → tiny_spec-0.2.1}/tiny-spec-tasks/templates/tasks.template.md +0 -0
  21. {tiny_spec-0.1.0 → tiny_spec-0.2.1}/tiny_spec/cli.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: tiny-spec
3
- Version: 0.1.0
3
+ Version: 0.2.1
4
4
  Summary: A tiny, opinionated take on spec-driven development.
5
5
  Project-URL: Homepage, https://github.com/GrayMa77er/tiny-spec
6
6
  Project-URL: Source, https://github.com/GrayMa77er/tiny-spec
@@ -54,15 +54,23 @@ builds the work one task at a time. Every task is implemented by one agent and
54
54
  graded by an independent reviewer that runs the real tests before anything is
55
55
  committed.
56
56
 
57
- It is four skills and two agents. No orchestrator, no config file, no build step.
57
+ It is four skills and two agents — plus an optional Phase-0 on-ramp,
58
+ `tiny-spec-breakdown`, for carving a PRD into stories. No orchestrator, no config
59
+ file, no build step.
58
60
 
59
61
  ```
60
- tiny-spec-create → tiny-spec-plan → tiny-spec-tasks → tiny-spec-build
61
- intent design tasks per-task loop
62
- SPEC.md PLAN.md + tasks.md plan → implement → review → commit
63
- constitution
62
+ tiny-spec-breakdown ⇢ tiny-spec-create → tiny-spec-plan → tiny-spec-tasks → tiny-spec-build
63
+ (optional) intent design tasks per-task loop
64
+ PRD → stories SPEC.md PLAN.md + tasks.md plan → implement → review → commit
65
+ BREAKDOWN.md constitution
64
66
  ```
65
67
 
68
+ `tiny-spec-breakdown` is optional: skip it and start at `tiny-spec-create` for a
69
+ single known piece of work; reach for it when a PRD needs carving into many stories.
70
+ It reads a PRD plus wireframes/notes and writes a `BREAKDOWN.md` at your project root
71
+ — a flat list of Features → Stories with draft acceptance criteria — which
72
+ `tiny-spec-create` then reads one story at a time.
73
+
66
74
  ## New to spec-driven development?
67
75
 
68
76
  Spec-driven development (SDD) means writing down *what* you want and *why* before
@@ -85,10 +93,11 @@ uvx tiny-spec install
85
93
  Restart Claude Code so it picks up the new skills, then run the flow in your project:
86
94
 
87
95
  ```
88
- /tiny-spec-create # capture intent and requirements (binds a ticket, optional)
89
- /tiny-spec-plan # turn the spec into a design and harden the constitution
90
- /tiny-spec-tasks # slice the plan into an ordered checklist
91
- /tiny-spec-build # build each task: implement, review, commit
96
+ /tiny-spec-breakdown # optional: carve a PRD + wireframes into stories (BREAKDOWN.md)
97
+ /tiny-spec-create # capture intent and requirements (binds a ticket, optional)
98
+ /tiny-spec-plan # turn the spec into a design and harden the constitution
99
+ /tiny-spec-tasks # slice the plan into an ordered checklist
100
+ /tiny-spec-build # build each task: implement, review, commit
92
101
  ```
93
102
 
94
103
  Re-run `install` any time to update; `tiny-spec uninstall` removes only what it
@@ -106,7 +115,7 @@ git clone https://github.com/GrayMa77er/tiny-spec.git
106
115
  cd tiny-spec
107
116
 
108
117
  mkdir -p "$HOME/.claude/skills" "$HOME/.claude/agents"
109
- for s in tiny-spec-create tiny-spec-plan tiny-spec-tasks tiny-spec-build; do
118
+ for s in tiny-spec-breakdown tiny-spec-create tiny-spec-plan tiny-spec-tasks tiny-spec-build; do
110
119
  cp -R "$s" "$HOME/.claude/skills/$s"
111
120
  done
112
121
  cp agents/*.md "$HOME/.claude/agents/"
@@ -209,7 +218,6 @@ It is namespaced per ticket, with a shared spine at the root:
209
218
 
210
219
  ```
211
220
  .spec/
212
- ACTIVE the active ticket directory name (resolution pointer)
213
221
  constitution.md project-wide, shared across tickets
214
222
  memory.md operational lessons, shared across tickets
215
223
  <ticket-id>/ one directory per ticket (PROJ-123/, gh-42/, …)
@@ -17,15 +17,23 @@ builds the work one task at a time. Every task is implemented by one agent and
17
17
  graded by an independent reviewer that runs the real tests before anything is
18
18
  committed.
19
19
 
20
- It is four skills and two agents. No orchestrator, no config file, no build step.
20
+ It is four skills and two agents — plus an optional Phase-0 on-ramp,
21
+ `tiny-spec-breakdown`, for carving a PRD into stories. No orchestrator, no config
22
+ file, no build step.
21
23
 
22
24
  ```
23
- tiny-spec-create → tiny-spec-plan → tiny-spec-tasks → tiny-spec-build
24
- intent design tasks per-task loop
25
- SPEC.md PLAN.md + tasks.md plan → implement → review → commit
26
- constitution
25
+ tiny-spec-breakdown ⇢ tiny-spec-create → tiny-spec-plan → tiny-spec-tasks → tiny-spec-build
26
+ (optional) intent design tasks per-task loop
27
+ PRD → stories SPEC.md PLAN.md + tasks.md plan → implement → review → commit
28
+ BREAKDOWN.md constitution
27
29
  ```
28
30
 
31
+ `tiny-spec-breakdown` is optional: skip it and start at `tiny-spec-create` for a
32
+ single known piece of work; reach for it when a PRD needs carving into many stories.
33
+ It reads a PRD plus wireframes/notes and writes a `BREAKDOWN.md` at your project root
34
+ — a flat list of Features → Stories with draft acceptance criteria — which
35
+ `tiny-spec-create` then reads one story at a time.
36
+
29
37
  ## New to spec-driven development?
30
38
 
31
39
  Spec-driven development (SDD) means writing down *what* you want and *why* before
@@ -48,10 +56,11 @@ uvx tiny-spec install
48
56
  Restart Claude Code so it picks up the new skills, then run the flow in your project:
49
57
 
50
58
  ```
51
- /tiny-spec-create # capture intent and requirements (binds a ticket, optional)
52
- /tiny-spec-plan # turn the spec into a design and harden the constitution
53
- /tiny-spec-tasks # slice the plan into an ordered checklist
54
- /tiny-spec-build # build each task: implement, review, commit
59
+ /tiny-spec-breakdown # optional: carve a PRD + wireframes into stories (BREAKDOWN.md)
60
+ /tiny-spec-create # capture intent and requirements (binds a ticket, optional)
61
+ /tiny-spec-plan # turn the spec into a design and harden the constitution
62
+ /tiny-spec-tasks # slice the plan into an ordered checklist
63
+ /tiny-spec-build # build each task: implement, review, commit
55
64
  ```
56
65
 
57
66
  Re-run `install` any time to update; `tiny-spec uninstall` removes only what it
@@ -69,7 +78,7 @@ git clone https://github.com/GrayMa77er/tiny-spec.git
69
78
  cd tiny-spec
70
79
 
71
80
  mkdir -p "$HOME/.claude/skills" "$HOME/.claude/agents"
72
- for s in tiny-spec-create tiny-spec-plan tiny-spec-tasks tiny-spec-build; do
81
+ for s in tiny-spec-breakdown tiny-spec-create tiny-spec-plan tiny-spec-tasks tiny-spec-build; do
73
82
  cp -R "$s" "$HOME/.claude/skills/$s"
74
83
  done
75
84
  cp agents/*.md "$HOME/.claude/agents/"
@@ -172,7 +181,6 @@ It is namespaced per ticket, with a shared spine at the root:
172
181
 
173
182
  ```
174
183
  .spec/
175
- ACTIVE the active ticket directory name (resolution pointer)
176
184
  constitution.md project-wide, shared across tickets
177
185
  memory.md operational lessons, shared across tickets
178
186
  <ticket-id>/ one directory per ticket (PROJ-123/, gh-42/, …)
@@ -4,7 +4,7 @@ build-backend = "hatchling.build"
4
4
 
5
5
  [project]
6
6
  name = "tiny-spec"
7
- version = "0.1.0"
7
+ version = "0.2.1"
8
8
  description = "A tiny, opinionated take on spec-driven development."
9
9
  readme = "README.md"
10
10
  requires-python = ">=3.9"
@@ -34,6 +34,7 @@ packages = ["tiny_spec"]
34
34
  # expects them). Bundle them into the wheel under tiny_spec/_bundle/ so the
35
35
  # installer can copy them at runtime, without restructuring the repo.
36
36
  [tool.hatch.build.targets.wheel.force-include]
37
+ "tiny-spec-breakdown" = "tiny_spec/_bundle/tiny-spec-breakdown"
37
38
  "tiny-spec-create" = "tiny_spec/_bundle/tiny-spec-create"
38
39
  "tiny-spec-plan" = "tiny_spec/_bundle/tiny-spec-plan"
39
40
  "tiny-spec-tasks" = "tiny_spec/_bundle/tiny-spec-tasks"
@@ -43,6 +44,7 @@ packages = ["tiny_spec"]
43
44
  [tool.hatch.build.targets.sdist]
44
45
  include = [
45
46
  "tiny_spec",
47
+ "tiny-spec-breakdown",
46
48
  "tiny-spec-create",
47
49
  "tiny-spec-plan",
48
50
  "tiny-spec-tasks",
@@ -0,0 +1,92 @@
1
+ ---
2
+ name: tiny-spec-breakdown
3
+ description: Optional Phase-0 on-ramp — read a PRD plus wireframes/notes, interview briefly, and decompose the work into a flat list of Features → user Stories (each with draft acceptance criteria and a slug) plus a shared Decisions block, written to BREAKDOWN.md at the project root. Does not scaffold .spec/ or touch the constitution — tiny-spec-create reads BREAKDOWN.md in seeded mode and does that. The suite works without it.
4
+ ---
5
+
6
+ # tiny-spec-breakdown
7
+
8
+ Turns a body of source material — a PRD, wireframes, loose notes — into the set of
9
+ **user stories** to spec, *before* any one of them is picked up. It is the moment
10
+ **before** `tiny-spec-create`: that skill takes **one story → one spec**; this one
11
+ decides what the stories *are*.
12
+
13
+ This is an **optional** front door. The suite works fine without it — start at
14
+ `tiny-spec-create` for a single known piece of work. Reach for `breakdown` only when
15
+ you have a multi-story PRD to carve.
16
+
17
+ **It writes exactly one file: `BREAKDOWN.md` at the project root.** It does **not**
18
+ scaffold `.spec/`, does **not** create or edit `constitution.md`, and does **not**
19
+ run `tiny-spec-create` or loop over stories. It produces the worksheet and stops —
20
+ you create the work items in your tracker from it, then run the normal flow per
21
+ story. Keeping the carve out of `.spec/` is deliberate: `.spec/` is per-spec build
22
+ state; the breakdown is pre-spec planning the tracker owns.
23
+
24
+ ## Inputs
25
+
26
+ Take one or more file paths from the user (a PRD is the usual anchor; wireframes,
27
+ design notes, an API sketch are common companions). **Read them all.** If two
28
+ sources disagree, ask which wins and note it — don't silently pick.
29
+
30
+ ## Interview — short, five groups
31
+
32
+ Keep it lean (earned ceremony). Ask only what you can't infer from the inputs; skip
33
+ a group the material already answers.
34
+
35
+ 1. **Inputs & boundary.** Which files are in scope, and what's the boundary of *this*
36
+ breakdown — the whole product, one epic, or an MVP slice? *(Hint: anchors against
37
+ boiling the ocean; you can re-run later for the next slice.)*
38
+ 2. **Platform & hierarchy.** Where will these live — `ado | jira | github | monday`,
39
+ or **ad-hoc** (no tracker)? Which levels does the team actually use? *(Hint: ADO
40
+ default is Epic › Feature › Story › Task, but many teams skip Feature — don't
41
+ invent levels they won't track. Ad-hoc → kebab slugs, no parent ids, no `Refs:`
42
+ footer downstream.)*
43
+ 3. **Structure & granularity.** How should features be grouped — by user journey, by
44
+ screen/surface, by domain/module, or by persona? And how big is a story? *(Hint:
45
+ wireframes push toward screen-based, a PRD usually reads journey-based — pick one
46
+ lens. A story = one buildable spec = one tight plan→build loop; if it can't be
47
+ built and verified in one pass, split it as a vertical slice, not a layer.)*
48
+ 4. **Tech & cross-cutting** (→ the Decisions block). Stack / framework, where code
49
+ lives, and any cross-cutting non-functionals (auth, i18n, a11y, perf)? *(Hint:
50
+ stack + code-location seed the constitution later; cross-cutting concerns become
51
+ constitution invariants or shared requirements — **not** their own feature.)*
52
+ 5. **Confirm the carve.** Play back the proposed Features and the stories under each
53
+ before writing. Adjust on feedback.
54
+
55
+ ## Write `BREAKDOWN.md`
56
+
57
+ Copy this skill's `templates/BREAKDOWN.template.md` to `BREAKDOWN.md` at the
58
+ **project root** (the user's cwd) and fill it in:
59
+
60
+ - the **`## Decisions`** block — stack, code location, platform, structure lens,
61
+ scope, cross-cutting concerns;
62
+ - one **`## Feature:`** heading per feature (a grouping only — it never becomes a
63
+ folder), with the tracker-parent id left blank for the user to fill after creating
64
+ it;
65
+ - under each feature, the **stories** — each a single user-observable capability,
66
+ with a proposed **slug** and its **draft acceptance criteria** (`AC:` lines).
67
+
68
+ **Slugs** mirror `tiny-spec-create`: derive from the platform key when bound —
69
+ ADO `AB#77`→`ado-77`, GitHub `#42`→`gh-42`, Monday item→`monday-<id>`, Jira
70
+ `PROJ-123` verbatim; **ad-hoc** → a short kebab-case slug (`email-login`). The
71
+ tracker id is unknown until the user creates the item, so leave the parent-id
72
+ placeholder and use a provisional slug where needed.
73
+
74
+ **Acceptance criteria are draft `REQ-N`.** Write each as one **user-observable,
75
+ testable** outcome with no implementation detail — and keep it **atomic**: if a line
76
+ hides two capabilities behind an "and", split it. `tiny-spec-create` promotes these
77
+ into `REQ-N`, so atomic ACs here save a re-split later.
78
+
79
+ ## When done
80
+
81
+ Print the carve — the features and the stories under each — and a **suggested first
82
+ spec** (which story to pick up first). Then **stop**. Tell the user the next steps,
83
+ which you do **not** perform:
84
+
85
+ 1. Create the Features and Stories in their tracker from `BREAKDOWN.md`, capturing
86
+ the ids.
87
+ 2. Run `tiny-spec-create` per story — with `BREAKDOWN.md` present it reads each
88
+ story's entry instead of re-interviewing (seeded mode), and on first run seeds the
89
+ constitution from the Decisions block.
90
+
91
+ Do **not** scaffold `.spec/`, write a constitution, or invoke `tiny-spec-create`
92
+ yourself — `breakdown` ends here.
@@ -0,0 +1,37 @@
1
+ # Breakdown — <product / epic name>
2
+
3
+ <!-- A pre-spec worksheet. It lives at the PROJECT ROOT (not under .spec/) and is
4
+ NOT a tracked .spec/ artifact. tiny-spec-create reads it in seeded mode: each
5
+ Story below becomes one .spec/<slug>/SPEC.md (its AC lines → REQ-N), and on a
6
+ story's first create the Decisions block seeds the shared constitution.md.
7
+ Regenerable — edit freely; the tracker (ADO/Jira/…) stays the source of truth. -->
8
+
9
+ ## Decisions
10
+
11
+ <!-- Project-wide framing. tiny-spec-create folds these into constitution.md on a
12
+ story's first run: Stack + Code-lives → Style and Layout; verification hints →
13
+ Verification commands; Cross-cutting → Guiding invariants. Keep each to a line. -->
14
+
15
+ - Stack: <language / framework / runtime>
16
+ - Code lives: <where the code is — repo path, dirs of note>
17
+ - Platform: <ado | jira | github | monday | ad-hoc> <!-- ad-hoc → kebab slugs, no parent ids, no Refs footer -->
18
+ - Structure lens: <by journey | by screen | by domain | by persona — how features are grouped below>
19
+ - Scope: <whole product | epic | MVP slice — the boundary of this breakdown>
20
+ - Cross-cutting: <non-functionals spanning stories — auth, i18n, a11y, perf. These become constitution invariants or shared REQ, NOT their own feature.>
21
+
22
+ ## Feature: <feature name> (tracker parent: <fill after creating, e.g. AB#120>)
23
+
24
+ - Story: <one user-observable capability> slug: <ado-__ | kebab>
25
+ - AC: <a single user-observable, testable outcome — becomes REQ-1 in this story's SPEC.md>
26
+ - AC: <another — keep each atomic; no "and" hiding two capabilities>
27
+ - Story: <one user-observable capability> slug: <ado-__ | kebab>
28
+ - AC: <…>
29
+
30
+ ## Feature: <feature name> (tracker parent: <…>)
31
+
32
+ - Story: <one user-observable capability> slug: <ado-__ | kebab>
33
+ - AC: <…>
34
+
35
+ ## Suggested first spec
36
+
37
+ <story title> (slug: <…>) — run tiny-spec-create on this first.
@@ -19,8 +19,9 @@ alongside this skill (see the suite README).
19
19
 
20
20
  ## Inputs
21
21
 
22
- 1. **Resolve the active ticket dir** from `.spec/ACTIVE` (if absent and exactly one
23
- ticket dir exists, use it; if several exist, ask which). Call it `<active>`.
22
+ 1. **Resolve the active ticket dir** from the current git branch: the `.spec/<slug>/`
23
+ whose slug matches the branch name (one branch per ticket). If none matches, use
24
+ the sole ticket dir if there's exactly one; else ask which. Call it `<active>`.
24
25
  2. Read `.spec/constitution.md` (**the shared constitution**), `.spec/memory.md` if
25
26
  it exists (**shared**), and `.spec/<active>/tasks.md`. The constitution + memory
26
27
  get injected **whole** into every executor and reviewer. Also note the `ticket`
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: tiny-spec-create
3
- description: Start or update a spec — capture intent and requirements into .spec/<slug>/SPEC.md, optionally bound to a ticket (or ad-hoc). On first run, scaffolds .spec/ and seeds the shared constitution (constitution.md) from a short interview. Re-run to update an existing spec in place.
3
+ description: Start or update a spec — capture intent and requirements into .spec/<slug>/SPEC.md, optionally bound to a ticket (or ad-hoc). On first run, scaffolds .spec/ and seeds the shared constitution (constitution.md) from a short interview. If a BREAKDOWN.md (from tiny-spec-breakdown) is present, seeds the spec from a chosen story instead of a full interview. Re-run to update an existing spec in place.
4
4
  ---
5
5
 
6
6
  # tiny-spec-create
@@ -16,6 +16,31 @@ directory. Two are **project-wide** and shared at the `.spec/` root
16
16
  `tasks.md`, `decisions.md`) live under `.spec/<slug>/`. Templates ship in this
17
17
  skill's own `templates/` folder (alongside this file); read them from there.
18
18
 
19
+ ## Seeded mode (`BREAKDOWN.md` present)
20
+
21
+ Before interviewing, check for **`BREAKDOWN.md`** at the project root (written by the
22
+ optional `tiny-spec-breakdown` skill). If it exists and the user is creating one of
23
+ its stories, **seed from it instead of running the full interview** — confirm, don't
24
+ re-ask:
25
+
26
+ 1. **Pick the story.** Ask which story (or infer from the user's request); match it
27
+ to its `## Feature:` → `Story:` entry by slug or title.
28
+ 2. **Slug + binding.** Use the story's **slug** for `.spec/<slug>/`. Take the ticket
29
+ provider from the Decisions **Platform** and the **id** from the story's tracker
30
+ parent or the user (ask for the id if the placeholder is still blank; omit the
31
+ `ticket:` block entirely if the platform is ad-hoc).
32
+ 3. **Requirements.** Promote the story's **`AC:` lines into `REQ-N`** — verbatim where
33
+ already atomic; split any that hide two capabilities behind an "and".
34
+ 4. **Constitution (first run only).** Seed `constitution.md` from the **`## Decisions`**
35
+ block instead of interviewing stack/layout: Stack + Code-lives → **Style** and
36
+ **Layout**; any verification hints → **Verification commands**; cross-cutting
37
+ concerns → **Guiding invariants**. If `constitution.md` already exists, reuse it.
38
+ 5. Confirm the captured `REQ-N` with the user, then write `SPEC.md` as below.
39
+
40
+ Only the **project-wide** questions collapse — still confirm this story's binding and
41
+ requirements. If there is **no `BREAKDOWN.md`**, or no entry matches, run the **full
42
+ interview** below unchanged.
43
+
19
44
  ## Pick the slug (resolve the active dir)
20
45
 
21
46
  Each spec lives in its own directory `.spec/<slug>/`. At the start of the interview,
@@ -31,14 +56,20 @@ establish the slug. There are two paths — both are first-class:
31
56
  footer (everything else — namespacing, the constitution, the build loop — is
32
57
  identical). You can bind a ticket later by adding the block to `SPEC.md`.
33
58
 
34
- Create `.spec/<slug>/` and write the slug as the single line of `.spec/ACTIVE` (the
35
- pointer every downstream skill reads to find the active spec).
59
+ Create `.spec/<slug>/`.
60
+
61
+ **One branch per ticket — how the active ticket is resolved.** Work for a ticket
62
+ lives on a branch named after the slug (e.g. `PROJ-123` or
63
+ `feature/PROJ-123-dark-mode`); downstream skills resolve the active ticket from the
64
+ branch name, so several tickets can be in flight on separate branches at once. If the
65
+ user isn't already on such a branch, create one (e.g. `git switch -c <slug>`) so the
66
+ new spec resolves by branch match.
36
67
 
37
68
  ## First run — scaffold
38
69
 
39
70
  If `.spec/` does not exist:
40
71
 
41
- 1. Create `.spec/` and the active ticket dir `.spec/<slug>/`, and write `.spec/ACTIVE`.
72
+ 1. Create `.spec/` and the active ticket dir `.spec/<slug>/` (on the ticket branch — see above).
42
73
  2. **Short interview** (keep it short — earned ceremony):
43
74
  - the ticket binding (above);
44
75
  - the intent in one paragraph;
@@ -71,7 +102,8 @@ that hides two capabilities, split it.
71
102
  ## Update mode (re-run on an existing spec)
72
103
 
73
104
  When the active ticket's `SPEC.md` already exists and the user wants a change to
74
- requirements (resolve the active dir from `.spec/ACTIVE`):
105
+ requirements (resolve the active dir by branch match — see the resolution order
106
+ downstream skills use):
75
107
 
76
108
  1. Edit `.spec/<active>/SPEC.md` in place — add/alter/remove `REQ-N`, preserving
77
109
  existing ids where the requirement still exists.
@@ -92,9 +124,9 @@ Tell the user which downstream docs went stale and to re-run `tiny-spec-plan` to
92
124
  reconcile.
93
125
 
94
126
  > **New spec?** To start a different piece of work (a new ticket or an ad-hoc
95
- > change), re-run this skill — it creates a new `.spec/<slug>/` and repoints
96
- > `.spec/ACTIVE`. The shared `constitution.md` and `memory.md` carry over; the
97
- > previous spec's artifacts stay untouched on disk.
127
+ > change), re-run this skill on a new branch — it creates a new `.spec/<slug>/` that
128
+ > resolves by branch match. The shared `constitution.md` and `memory.md` carry over;
129
+ > the previous spec's artifacts stay untouched on disk.
98
130
 
99
131
  ## When done
100
132
 
@@ -11,8 +11,9 @@ reviewed against.
11
11
 
12
12
  Artifacts live under `.spec/`: the **shared** constitution at the root
13
13
  (`.spec/constitution.md`), the per-ticket `SPEC.md`/`PLAN.md` under
14
- `.spec/<ticket-id>/`. **Resolve the active ticket dir** from `.spec/ACTIVE` (if it's
15
- absent and exactly one ticket dir exists, use it; if several exist, ask which). The
14
+ `.spec/<ticket-id>/`. **Resolve the active ticket dir** from the current git branch:
15
+ the `.spec/<slug>/` whose slug matches the branch name (one branch per ticket). If
16
+ none matches, use the sole ticket dir if there's exactly one; else ask which. The
16
17
  template ships in this skill's own `templates/` folder (alongside this file).
17
18
  Requires `.spec/<active>/SPEC.md`.
18
19
 
@@ -10,8 +10,9 @@ tasks. No waves, no parallelism, no `owns:` contracts — tasks run one at a tim
10
10
  top to bottom.
11
11
 
12
12
  Artifacts live under `.spec/`; `PLAN.md` and `tasks.md` are per-ticket. **Resolve
13
- the active ticket dir** from `.spec/ACTIVE` (if absent and exactly one ticket dir
14
- exists, use it; if several exist, ask which). The template ships in this skill's own
13
+ the active ticket dir** from the current git branch: the `.spec/<slug>/` whose slug
14
+ matches the branch name (one branch per ticket). If none matches, use the sole
15
+ ticket dir if there's exactly one; else ask which. The template ships in this skill's own
15
16
  `templates/` folder (alongside this file). Requires `.spec/<active>/PLAN.md`.
16
17
 
17
18
  ## Slice the plan into tasks
@@ -5,4 +5,4 @@ into your Claude Code config directory (``~/.claude/`` by default). It adds no
5
5
  runtime behavior to the suite itself.
6
6
  """
7
7
 
8
- __version__ = "0.1.0"
8
+ __version__ = "0.2.1"
@@ -1,5 +1,6 @@
1
1
  {
2
2
  "skills": [
3
+ "tiny-spec-breakdown",
3
4
  "tiny-spec-create",
4
5
  "tiny-spec-plan",
5
6
  "tiny-spec-tasks",
File without changes
File without changes
File without changes