arcane-cli 0.15.9 โ 0.16.2
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 +5 -5
- package/dist/assets/.arcane/governance/development-methodology.md +4 -1
- package/dist/assets/.arcane/governance/git-conventions.md +7 -0
- package/dist/assets/.arcane/governance/portable-bootstrap.md +1 -1
- package/dist/assets/.arcane/templates/venture-template/IDEAS.md +11 -0
- package/dist/assets/.arcane/templates/venture-template/TODO.md +8 -0
- package/dist/assets/.claude/commands/spell-manifest.md +9 -0
- package/dist/assets/.claude/commands/spell-summon-venture.md +9 -0
- package/dist/assets/.github/prompts/spell-check-drift.prompt.md +7 -0
- package/dist/assets/.github/prompts/spell-feedback.prompt.md +29 -5
- package/dist/assets/.github/prompts/spell-manifest.prompt.md +132 -0
- package/dist/assets/.github/prompts/spell-save-idea.prompt.md +36 -5
- package/dist/assets/.github/prompts/spell-summon-venture.prompt.md +109 -0
- package/dist/assets/.github/prompts/spell-todo.prompt.md +40 -4
- package/dist/index.js +283 -51
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
- package/dist/assets/.claude/commands/spell-bootstrap-business.md +0 -9
- package/dist/assets/.github/prompts/spell-bootstrap-business.prompt.md +0 -73
package/README.md
CHANGED
|
@@ -30,7 +30,7 @@ npm install -g arcane-cli # then: spell init
|
|
|
30
30
|
|
|
31
31
|
<div align="center">
|
|
32
32
|
|
|
33
|
-
**๐ opinionated lifecycle** ยท **๐
|
|
33
|
+
**๐ opinionated lifecycle** ยท **๐ 34 spells** ยท **๐ค 12 agents** ยท **โ๏ธ 19 governance standards** ยท **๐ markdown-native** ยท **๐ any AI client / tracker**
|
|
34
34
|
|
|
35
35
|
</div>
|
|
36
36
|
|
|
@@ -113,20 +113,20 @@ Arcane isn't a prompt snippet โ it's a full framework. Everything installs int
|
|
|
113
113
|
|
|
114
114
|
| Layer | What you get |
|
|
115
115
|
| --- | --- |
|
|
116
|
-
| ๐ **Spells** | **
|
|
116
|
+
| ๐ **Spells** | **34** prompt-driven workflows spanning the entire lifecycle โ planning, architecture, implementation, testing, review, shipping, session management, and ops. |
|
|
117
117
|
| โ๏ธ **Governance** | **19** battle-tested standards as drop-in templates: git conventions, testing standards, CI/CD, threat model, ADR format, naming, security hardening, and more. |
|
|
118
118
|
| ๐ค **Agents** | **12** ready-made agent personas with roles, clusters, and a gamified autonomy model โ assign work and power levels per repo. |
|
|
119
119
|
| ๐ ๏ธ **CLI** | `spell init / add / update / status / uninstall` โ install by profile or ร la carte, and keep everything in sync as new versions ship. |
|
|
120
120
|
|
|
121
121
|
<details>
|
|
122
|
-
<summary><b>๐ The full spell catalogue (
|
|
122
|
+
<summary><b>๐ The full spell catalogue (34)</b></summary>
|
|
123
123
|
|
|
124
124
|
**Core Spell Loop** โ `plan` ยท `enchant` ยท `scope` ยท `architect` ยท `implement` ยท `test` ยท `review` ยท `ship`
|
|
125
125
|
**Session** โ `open-session` ยท `close-session` ยท `status`
|
|
126
126
|
**Operational & Git** โ `commit-work` ยท `todo` ยท `check-drift` ยท `bug` ยท `create-pull-request` ยท `address-review` ยท `bump`
|
|
127
127
|
**Specialized** โ `full-cycle` ยท `review-batch` ยท `security-review` ยท `dotnet-expert` ยท `product-review` ยท `suggest-feature`
|
|
128
|
-
**Knowledge & Docs** โ `document` ยท `explain-concept` ยท `feedback` ยท `save-idea`
|
|
129
|
-
**Business & Admin** โ `
|
|
128
|
+
**Knowledge & Docs** โ `document` ยท `explain-concept` ยท `feedback` ยท `save-idea` ยท `manifest`
|
|
129
|
+
**Business & Admin** โ `summon-venture` ยท `brainstorm` ยท `generate-bot-icons` ยท `present-arcane` ยท `arcane-version`
|
|
130
130
|
|
|
131
131
|
</details>
|
|
132
132
|
|
|
@@ -364,12 +364,15 @@ A tool that both writes and validates its own work cannot be trusted to catch it
|
|
|
364
364
|
| `spell-close-session` | Journal, summarize, update TODO |
|
|
365
365
|
| `spell-commit-work` | Conventional Commits with trailers |
|
|
366
366
|
| `spell-check-drift` | Documentation audit for staleness |
|
|
367
|
-
| `spell-
|
|
367
|
+
| `spell-summon-venture` | Create a new venture: folder, books, registry entry (hub-gated) |
|
|
368
368
|
| `spell-explain-concept` | Bridge concepts to project context |
|
|
369
369
|
| `spell-todo` | Manage TODO.md lifecycle |
|
|
370
370
|
| `spell-generate-bot-icons` | Generate agent avatar assets |
|
|
371
371
|
| `spell-bug` | Bug lifecycle: document โ tracker/TODO โ fix โ verify |
|
|
372
372
|
| `spell-suggest-feature` | Feature capture: user story โ tracker/TODO โ backlog |
|
|
373
|
+
| `spell-save-idea` | Fast-capture an idea into `IDEAS.md` (hub: optionally into a venture's book) |
|
|
374
|
+
| `spell-manifest` | Hub-gated: promote idea/todo-book entries downstream โ consumer repo, PRD, tracker, or public disclosure |
|
|
375
|
+
| `spell-feedback` | Session-quality feedback; framework-shaped items route upstream to arcane's GitHub (genericized, disclosure-gated) |
|
|
373
376
|
|
|
374
377
|
---
|
|
375
378
|
|
|
@@ -220,6 +220,13 @@ Create the session branch as the **first action** of any session, before any fil
|
|
|
220
220
|
1. `git branch -m <old> <new>`
|
|
221
221
|
2. `git push -u origin <new>`
|
|
222
222
|
3. `git push origin --delete <old>` (skip this if an active PR still depends on `<old>`).
|
|
223
|
+
- **EF-20 hazard:** on some Windows/Git-for-Windows filesystems, a rename or delete can trigger
|
|
224
|
+
an interactive retry prompt (e.g. a file lock from an editor or antivirus scan) that blocks
|
|
225
|
+
indefinitely on a terminal with no non-interactive fallback. When running these commands
|
|
226
|
+
directly through a tool that supports a per-call timeout (an agent's shell tool, a CI step),
|
|
227
|
+
set one rather than assuming the command will return. Arcane's own TypeScript Git helper
|
|
228
|
+
(`src/modules/git.ts`) applies this as a standing contract โ closed stdin plus a
|
|
229
|
+
command-class timeout โ for every `git` invocation the CLI itself makes.
|
|
223
230
|
|
|
224
231
|
**Agents:**
|
|
225
232
|
|
|
@@ -95,7 +95,7 @@ Development follows the **Spell Loop** โ structured planning phases feeding an
|
|
|
95
95
|
- `spell-commit-work` โ Standard Git workflow: stage โ message โ approve โ execute
|
|
96
96
|
- `spell-todo` โ Review TODO.md, prioritize, move resolved items to canonical docs
|
|
97
97
|
- `spell-check-drift` โ Find stale assumptions in docs vs. reality
|
|
98
|
-
- `spell-
|
|
98
|
+
- `spell-summon-venture` โ Create a new venture (hub-gated): folder, template docs, idea/todo books, registry entry
|
|
99
99
|
|
|
100
100
|
### Specialized
|
|
101
101
|
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
# Idea Inbox โ {Venture Name}
|
|
2
|
+
|
|
3
|
+
Per-venture idea book (hub-side). Add with `spell-save-idea --venture {slug}` (or natural
|
|
4
|
+
phrasing, e.g. "save this idea for {slug}"); triage with `spell-todo --sweep`; promote downstream
|
|
5
|
+
with `spell-manifest`. Entries are append-only; mark status in the trailing comment rather than
|
|
6
|
+
deleting.
|
|
7
|
+
|
|
8
|
+
Private by default, including for ventures whose own repo is public โ promotion to a public
|
|
9
|
+
destination is a deliberate disclosure event, not a side effect of saving an idea here.
|
|
10
|
+
|
|
11
|
+
---
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
# Open Items โ {Venture Name}
|
|
2
|
+
|
|
3
|
+
Per-venture todo book (hub-side). Add with `spell-todo` targeting this venture (or natural
|
|
4
|
+
phrasing, e.g. "add a todo for {slug}"); triage alongside the hub root list with `spell-todo
|
|
5
|
+
--sweep`. This is a scratchpad for unresolved items, not a system of record โ when an item is
|
|
6
|
+
resolved, move the outcome to the venture's `overview.md` or `DECISIONS.md`, then delete it here.
|
|
7
|
+
|
|
8
|
+
---
|
|
@@ -28,6 +28,7 @@ Use these files first:
|
|
|
28
28
|
- [agents/agent-policies.md](../../.arcane/governance/agent-policies.md)
|
|
29
29
|
- Most recent journal file(s) in [journal/](../../journal/)
|
|
30
30
|
- Relevant business overviews under [ventures/](../../ventures/)
|
|
31
|
+
- `ventures/registry.json`, if present (hub-role and registry-consistency detectors)
|
|
31
32
|
|
|
32
33
|
Scope selection (`--scope <value>`, default `all`):
|
|
33
34
|
|
|
@@ -48,6 +49,12 @@ Concrete detectors to run (in addition to general contradiction/stale-date check
|
|
|
48
49
|
- If normalized content differs, report **real content drift** with normal severity grading.
|
|
49
50
|
- If normalized content matches, report **line-ending-only drift** separately. Do not count these paths as real content findings and do not include them in severity totals or the Go / No-Go decision.
|
|
50
51
|
- Report exact path counts for both classes. Never summarize all byte-different files as content drift.
|
|
52
|
+
- **Hub-artifact leak (non-hub repos)** โ if `.arcane.json` does not have `role: "hub"`, the existence of any `ventures/*/IDEAS.md`, `ventures/*/TODO.md`, or `ventures/registry.json` is **Critical**: hub-only artifacts (potentially including sibling-venture and portfolio data) do not belong in a repo that isn't a declared hub. This check is deliberately structural (file existence only) โ a non-hub repo cannot safely hold the sibling-name list a content-level check would need, so that asymmetry is by design, not a gap.
|
|
53
|
+
- **Hub role/registry consistency (hub repos only)** โ when `.arcane.json` has `role: "hub"`:
|
|
54
|
+
- `role: "hub"` with no `{business_root}` directory (default `ventures/`) present โ **High**: the manifest claims a role the repo can't actually fulfill.
|
|
55
|
+
- `ventures/registry.json` slugs that don't match an existing `ventures/<slug>/` folder, or venture folders with no registry entry โ **Medium**, both directions.
|
|
56
|
+
- Malformed `status: promoted โ โฆ` / `status: dropped โฆ` markers in any book (unparseable destination, missing date) โ **Low**.
|
|
57
|
+
- A `ventures/<slug>/` folder with a `role`-shaped `.arcane.json`-like marker of its own (i.e., it looks like it's trying to be a hub itself) โ **Medium**: flag for operator review; nested hubs are unsupported.
|
|
51
58
|
|
|
52
59
|
For each drift finding include:
|
|
53
60
|
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: Spell โ Feedback
|
|
3
|
-
description: Collect structured feedback on AI-assistance quality and workflow friction, and append it to FEEDBACK.md for continuous improvement.
|
|
4
|
-
argument-hint: Optional focus area โ e.g., "spell-implement loop", "review quality", "session handoff"
|
|
3
|
+
description: Collect structured feedback on AI-assistance quality and workflow friction, and append it to FEEDBACK.md for continuous improvement. Framework-shaped items can route upstream to arcane's public GitHub issues.
|
|
4
|
+
argument-hint: Optional focus area โ e.g., "spell-implement loop", "review quality", "session handoff". Use `--flush` instead to re-offer any previously queued upstream items.
|
|
5
5
|
agent: agent
|
|
6
6
|
---
|
|
7
7
|
|
|
@@ -10,11 +10,16 @@ agent: agent
|
|
|
10
10
|
- This spell captures post-session feedback on how well the spells and AI assistance worked.
|
|
11
11
|
- It structures the feedback into actionable improvement items and appends them to `FEEDBACK.md` at the repo root.
|
|
12
12
|
- Use it after any session where assistance felt notably effective or notably off โ the record feeds `spell-enchant`.
|
|
13
|
+
- **Framework-shaped items** (about a spell, template, governance doc, playbook, or CLI behavior โ not this repo's own content) can additionally route upstream as a GitHub issue on `{ARCANE_UPSTREAM_REPO}` โ the same public intake path any arcane user would use, genericized first and gated by an explicit disclosure confirm. This is the whole consumerโarcane feedback loop: arcane is the one thing every consumer repo may reference without violating sibling isolation, because it's the installed, publicly-homed dependency, not a sibling venture.
|
|
13
14
|
|
|
14
15
|
---
|
|
15
16
|
|
|
16
17
|
Collect and record feedback to improve the Arcane workflow.
|
|
17
18
|
|
|
19
|
+
## Flush Mode (`--flush`)
|
|
20
|
+
|
|
21
|
+
If the argument is `--flush`, skip Steps 1โ5 entirely. Scan `FEEDBACK.md` for improvement items marked `<!-- upstream: queued -->`, and for each one run Step 6's filing flow (genericize, confirm, file or re-queue) without re-collecting feedback. Report how many were filed, re-queued, and how many remain.
|
|
22
|
+
|
|
18
23
|
The user's input describes what to give feedback on. If no argument is provided, ask one question: _"What part of the workflow or AI assistance do you want to give feedback on?"_ and wait.
|
|
19
24
|
|
|
20
25
|
## Step 1 โ Identify Scope
|
|
@@ -56,6 +61,8 @@ Extract:
|
|
|
56
61
|
|
|
57
62
|
Mark an item **substantial** (TODO-worthy) if any apply: it requires editing a spell/governance/agent file, it blocked task completion, or it recurs across sessions. Trivial one-off nits stay in `FEEDBACK.md` only.
|
|
58
63
|
|
|
64
|
+
For each substantial item, additionally classify **framework-shaped** vs **repo-local**: framework-shaped means the fix belongs in arcane itself (a spell prompt, template, governance doc, playbook, or CLI behavior this repo installed rather than authored); repo-local means it's specific to this repo's own content or configuration. Only framework-shaped items are offered upstream routing in Step 6.
|
|
65
|
+
|
|
59
66
|
## Step 4 โ Show Proposal
|
|
60
67
|
|
|
61
68
|
```
|
|
@@ -66,7 +73,7 @@ Mark an item **substantial** (TODO-worthy) if any apply: it requires editing a s
|
|
|
66
73
|
**Friction:** [...]
|
|
67
74
|
**Worked well:** [...]
|
|
68
75
|
**Improvement items:**
|
|
69
|
-
- [ ] [item] [SUBSTANTIAL if TODO-worthy]
|
|
76
|
+
- [ ] [item] [SUBSTANTIAL if TODO-worthy] [FRAMEWORK-SHAPED if upstream-eligible]
|
|
70
77
|
|
|
71
78
|
Append to FEEDBACK.md? (yes / edit / skip)
|
|
72
79
|
```
|
|
@@ -101,8 +108,23 @@ If the rating is โค 2, prepend a `โ ๏ธ LOW RATING` line to this proposal so i
|
|
|
101
108
|
```
|
|
102
109
|
|
|
103
110
|
3. For each item marked **substantial** in Step 3, offer to add it to `TODO.md` as a `[feedback]`-tagged item. If the user accepts, hand off to [`spell-todo`](spell-todo.prompt.md) rather than editing `TODO.md` directly โ it picks the right section and avoids duplicates.
|
|
104
|
-
4.
|
|
105
|
-
5.
|
|
111
|
+
4. For each item additionally marked **framework-shaped**, run Step 6.
|
|
112
|
+
5. Do NOT commit โ leave that to `spell-commit-work`.
|
|
113
|
+
6. Confirm what was appended and where, then point the user to [`spell-enchant`](spell-enchant.prompt.md) if the feedback suggests a spell or PRD is ready to be lifted to the next quality tier.
|
|
114
|
+
|
|
115
|
+
## Step 6 โ Upstream Routing (Framework-Shaped Items)
|
|
116
|
+
|
|
117
|
+
`{ARCANE_UPSTREAM_REPO}` is this install's own arcane framework repository (`owner/repo`) โ resolve it from the installed `arcane-cli` package's `repository` field (e.g. `node_modules/arcane-cli/package.json`, or `npm view arcane-cli repository.url` if not vendored locally); ask the user if it cannot be determined. Never hardcode a specific org/repo here โ a fork or downstream rename changes this value.
|
|
118
|
+
|
|
119
|
+
For each framework-shaped item:
|
|
120
|
+
|
|
121
|
+
1. **Genericize.** Strip anything identifying this specific consumer: venture/business names, org tokens, machine names, hub or local paths. Write "a consumer repo session" instead of naming the actual venture, generalize file paths to their relative form. The finding must read the same whether it came from this repo or any other arcane user's.
|
|
122
|
+
2. **Check `gh`.** If unauthenticated or offline, skip straight to the fallback below.
|
|
123
|
+
3. **Disclosure confirm.** Print the exact issue title and body that will be filed publicly on `{ARCANE_UPSTREAM_REPO}`, and ask for the literal word `disclose` โ same discipline as `spell-manifest`'s disclosure gate; this is the same kind of act (private observation โ public issue). Anything else is a decline, not an error.
|
|
124
|
+
4. **File.** On `disclose`: `gh issue create --repo {ARCANE_UPSTREAM_REPO} --title "<title>" --body "<genericized body>"`. Report the issue URL.
|
|
125
|
+
5. **Fallback.** If `gh` is unavailable, offline, or the operator declines: append `<!-- upstream: queued -->` to that item's line in `FEEDBACK.md`. Never block the rest of the session on this โ queuing is a complete, valid outcome. The next `spell-feedback` run (or `spell-feedback --flush`) re-offers every queued item.
|
|
126
|
+
|
|
127
|
+
Maintainer side is unchanged: GitHub issues are arcane's normal public intake; triage into arcane's own `IDEAS.md`/`DECISIONS.md` happens in arcane sessions like any other issue. This spell never writes to a hub's venture books and never reads `ventures/registry.json` โ framework feedback and venture ideas are different channels on purpose (venture ideas โ hub books โ `spell-manifest`; framework lessons โ here โ arcane's GitHub).
|
|
106
128
|
|
|
107
129
|
## Rules
|
|
108
130
|
|
|
@@ -111,3 +133,5 @@ If the rating is โค 2, prepend a `โ ๏ธ LOW RATING` line to this proposal so i
|
|
|
111
133
|
- If overall quality is โค 2, flag it with `โ ๏ธ LOW RATING` in the Step 4 proposal (before the append decision) and offer `spell-todo` to capture a concrete fix.
|
|
112
134
|
- After approval, write immediately โ no further questions.
|
|
113
135
|
- Never include secrets or tokens.
|
|
136
|
+
- Never file an upstream issue without the literal `disclose` confirmation on that exact entry โ batch approval of the local `FEEDBACK.md` append does not extend to Step 6.
|
|
137
|
+
- Never write a venture name, hub path, or machine name into an upstream issue โ genericize before showing the disclosure confirm, not after.
|
|
@@ -0,0 +1,132 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: Spell โ Manifest
|
|
3
|
+
description: Hub-gated interactive triage that promotes idea-book and todo-book entries downstream โ to a consumer repo, a PRD scaffold, a tracker item, public disclosure, or another venture's book.
|
|
4
|
+
argument-hint: Optional --venture <slug> to restrict triage to one venture's books
|
|
5
|
+
agent: agent
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
## Executive Summary
|
|
9
|
+
|
|
10
|
+
- This prompt is the promotion step of the idea lifecycle: it takes `status: new` entries out of hub-side `IDEAS.md`/`TODO.md` books and lands them where they actually get built โ a consumer repo, a tracker, a PRD, or (deliberately, never by accident) a public disclosure.
|
|
11
|
+
- **Hub-gated:** requires `role: "hub"` in `.arcane.json`. Refuses cleanly in a consumer repo.
|
|
12
|
+
- Batch-capable: list entries once, select by number/range, route each (or all identically), execute with one final confirmation โ except disclosure, which is never covered by a batch confirmation and always requires its own literal answer.
|
|
13
|
+
- Every downstream write is leak-scanned first: no sibling venture names, no hub paths, no machine names ever land in a consumer artifact.
|
|
14
|
+
- Idempotent: promoted entries are marked in place, so re-running never double-lands the same idea.
|
|
15
|
+
|
|
16
|
+
---
|
|
17
|
+
|
|
18
|
+
## Step 0 โ Hub Gate
|
|
19
|
+
|
|
20
|
+
Read `.arcane.json`. If `role` is not `"hub"`, stop and report:
|
|
21
|
+
|
|
22
|
+
> `spell-manifest` runs only in a hub repo (`role: "hub"` in `.arcane.json`). This repo is a consumer โ triage its own `IDEAS.md`/`TODO.md` with `spell-todo` (task), `spell-suggest-feature` (tracked story), or `spell-plan` (PRD) instead.
|
|
23
|
+
|
|
24
|
+
Do not read or list anything further. If `role` is `"hub"`, resolve `{BUSINESS_ROOT}` from `.arcane.json` (default `ventures/`) and load `{BUSINESS_ROOT}/registry.json`. If the registry is missing or fails to parse, stop and report the exact error โ never triage blind without knowing the venture list (sibling names come from here, and the leak scan in Step 5 depends on it).
|
|
25
|
+
|
|
26
|
+
## Step 1 โ Collect
|
|
27
|
+
|
|
28
|
+
Parse `status: new` entries from the hub root `IDEAS.md` and every `{BUSINESS_ROOT}/<slug>/IDEAS.md` / `TODO.md` that exists. If `--venture <slug>` was given, resolve it through the registry's aliases first (exact slug โ alias โ closest match offered โ never guessed; unknown slug lists the closest matches and stops) and restrict collection to that venture's two books plus the hub root.
|
|
29
|
+
|
|
30
|
+
Tolerate operator YAML frontmatter above a book's header โ entries always live below the `---` divider. Malformed entries (missing timestamp, unparseable status comment) are listed under a `Skipped` heading with `file:line`, never silently dropped.
|
|
31
|
+
|
|
32
|
+
## Step 2 โ List
|
|
33
|
+
|
|
34
|
+
Print one numbered list, grouped by book, oldest entry first within each group. Numbering is session-scoped โ it does not persist across runs.
|
|
35
|
+
|
|
36
|
+
```
|
|
37
|
+
Idea triage โ hub books (N books, M new entries)
|
|
38
|
+
|
|
39
|
+
hub IDEAS.md
|
|
40
|
+
1. [2026-08-02] [#dx] Portfolio-wide spell usage stats dashboard
|
|
41
|
+
ventures/ordovica/IDEAS.md
|
|
42
|
+
2. [2026-07-30] [#ui] Dark-mode toggle for event pages
|
|
43
|
+
ventures/ordovica/TODO.md
|
|
44
|
+
3. [ ] Confirm cart snapshot order (open item, no status comment โ todo-book entries are listed as-is)
|
|
45
|
+
```
|
|
46
|
+
|
|
47
|
+
## Step 3 โ Select
|
|
48
|
+
|
|
49
|
+
Ask: `Promote which? (numbers/ranges, e.g. 1,3,5-8, or "all")`. Accept a single answer covering the whole batch. `all` selects every listed entry, including ones in books outside `--venture` if no filter was given.
|
|
50
|
+
|
|
51
|
+
## Step 4 โ Route (per entry)
|
|
52
|
+
|
|
53
|
+
For each selected entry, in list order, resolve the venture it belongs to (`hub` for root-book entries) and offer destinations. The menu depends on that venture's registry entry:
|
|
54
|
+
|
|
55
|
+
| # | Destination | Requires | What lands |
|
|
56
|
+
| --- | --- | --- | --- |
|
|
57
|
+
| a | Consumer repo-root `IDEAS.md` | a registered clone on this machine | New entry, `status: new`, fresh timestamp |
|
|
58
|
+
| b | PRD scaffold in consumer `features/<slug>/PRD.md` | a registered clone | spell-plan-style stub: Problem Statement = idea text; tracking frontmatter from that repo's own `.arcane.json`; open question noting no work-item ID exists yet |
|
|
59
|
+
| c | Tracker item | venture `tracking != "none"` | ADO: resolve process template + work item type, `az boards work-item create`. GitHub: `gh issue create --repo <owner>/<repo>`. Works without a local clone. |
|
|
60
|
+
| d | Public disclosure to that repo's `IDEAS.md` | a registered clone, destination `visibility: "public"` | Same as (a) โ but gated by Step 5's disclosure confirm, always |
|
|
61
|
+
| e | Demote to a TODO book | โ | Venture's own `TODO.md` (or hub root `TODO.md` for hub-book entries), as a `- [ ]` line |
|
|
62
|
+
| f | Drop | โ | Nothing lands |
|
|
63
|
+
| g | Cross-copy to another venture's book | target venture exists in registry | Fresh `status: new` entry appended to that venture's book |
|
|
64
|
+
|
|
65
|
+
If the venture has no registered repo (`repos: []`, e.g. an idea-stage venture), only (e), (f), (g) are offered. Typing `same` for any entry after the first repeats the previous entry's destination.
|
|
66
|
+
|
|
67
|
+
Once every selected entry has a destination, print one consolidated plan and ask `Proceed? (go / edit / cancel)`. This confirmation covers ordinary destinations only โ it never authorizes a disclosure; see Step 5.
|
|
68
|
+
|
|
69
|
+
## Step 5 โ Disclosure Gate
|
|
70
|
+
|
|
71
|
+
Any destination whose repo has `visibility: "public"` โ (a) or (d) landing in a public repo, or (c) filing a tracker item in a public tracker (a GitHub issue on a public repo is exactly as much a disclosure as its `IDEAS.md`) โ is a disclosure, never covered by `all`, `go`, or any other batch confirmation. Per entry, print the **exact text** that will become public and ask for the literal word `disclose`. Anything else skips that one entry (it stays `status: new`) without aborting the rest of the batch.
|
|
72
|
+
|
|
73
|
+
On a repo's first-ever disclosure (its `IDEAS.md` has no existing entries with a `promoted โ public:` marker), offer to add this boundary statement to that file's header in the same staged change:
|
|
74
|
+
|
|
75
|
+
> Build-in-public covers source, decisions, and the accepted roadmap; idea incubation is curated and lands here when committed.
|
|
76
|
+
|
|
77
|
+
## Step 6 โ Execute
|
|
78
|
+
|
|
79
|
+
Per entry, in list order: **land downstream first, mark the hub entry after.** Before writing anything to a consumer repo, run the leak scan (Step 7) on the outbound text; a hit blocks that entry and asks for an operator rewrite rather than writing leaked content. After a successful downstream write, mark the hub entry:
|
|
80
|
+
|
|
81
|
+
```
|
|
82
|
+
<!-- status: promoted โ <dest> YYYY-MM-DD -->
|
|
83
|
+
```
|
|
84
|
+
|
|
85
|
+
where `<dest>` is one of:
|
|
86
|
+
|
|
87
|
+
```
|
|
88
|
+
repo:<slug>/IDEAS.md
|
|
89
|
+
prd:<slug>/features/<feature-slug>
|
|
90
|
+
ado:<slug>#<id>
|
|
91
|
+
github:<slug>#<id> (append " (disclosed)" if the repo is public)
|
|
92
|
+
public:<slug>/IDEAS.md (disclosed)
|
|
93
|
+
hub:TODO.md
|
|
94
|
+
book:<other-slug>/IDEAS.md
|
|
95
|
+
```
|
|
96
|
+
|
|
97
|
+
Dropped entries get `<!-- status: dropped YYYY-MM-DD -->`, optionally with a trailing `(reason)`.
|
|
98
|
+
|
|
99
|
+
Before any downstream write, grep the target file for the entry's normalized first ~40 characters โ if already present, treat this entry as already-landed, mark the hub entry promoted, and skip the write. This is what makes an interrupted or re-run batch safe.
|
|
100
|
+
|
|
101
|
+
## Step 7 โ Leak Scan
|
|
102
|
+
|
|
103
|
+
Before writing outbound text to any consumer or public destination, scan it for:
|
|
104
|
+
|
|
105
|
+
- Every other venture's slug and aliases from the registry (never the destination's own)
|
|
106
|
+
- Hub path fragments (`{BUSINESS_ROOT}` paths, this repo's own root-relative paths)
|
|
107
|
+
- Machine names (the `clones` keys across the registry)
|
|
108
|
+
- This repo's org-token denylist, if `.arcane.json`/config defines one
|
|
109
|
+
|
|
110
|
+
A hit blocks the write and reports exactly what matched; offer the operator a rewrite or `keep in book` (leave the entry `status: new`, untouched). This scan is only possible hub-side, because only the hub holds the full sibling list โ that asymmetry is deliberate, not a gap: a consumer repo could never run this check on itself without first being handed the very list it must never see.
|
|
111
|
+
|
|
112
|
+
## Step 8 โ Report
|
|
113
|
+
|
|
114
|
+
Stage (never commit) the touched files in each repo that received a write, including this hub repo. Print one proposed commit message per repo:
|
|
115
|
+
|
|
116
|
+
```
|
|
117
|
+
Staged (not committed):
|
|
118
|
+
hub: ventures/ordovica/IDEAS.md
|
|
119
|
+
proposed: docs(ideas): promote 1 entry to ordovica
|
|
120
|
+
ordovica: IDEAS.md
|
|
121
|
+
proposed: docs(ideas): capture dark-mode toggle candidate
|
|
122
|
+
Run spell-commit-work in each repo. N entries remain new.
|
|
123
|
+
```
|
|
124
|
+
|
|
125
|
+
## Rules
|
|
126
|
+
|
|
127
|
+
- Never run outside a hub repo. Never infer hub status.
|
|
128
|
+
- Never let `all` or the plan-confirm authorize a disclosure โ that confirmation is always separate, always per-entry, always the literal word `disclose`.
|
|
129
|
+
- Never write a sibling venture's slug, a hub path, or a machine name into a consumer or public artifact โ the leak scan is mandatory, not advisory.
|
|
130
|
+
- Never commit. Stage and report; hand off to `spell-commit-work`.
|
|
131
|
+
- Never guess a venture from partial input โ resolve through the registry's aliases or ask.
|
|
132
|
+
- Land downstream before marking the hub entry promoted, so an interrupted batch never loses track of what actually shipped.
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: Spell โ Save Idea
|
|
3
|
-
description: Quickly capture a fleeting idea into the repo's idea inbox so it is not lost. Low ceremony, no approval gate, optimized for voice and speed.
|
|
4
|
-
argument-hint: The idea itself โ a sentence to a couple of paragraphs (e.g., "add a dark-mode toggle to the settings page")
|
|
3
|
+
description: Quickly capture a fleeting idea into the repo's idea inbox so it is not lost. Low ceremony, no approval gate, optimized for voice and speed. In a hub repo, optionally target a venture's own idea book.
|
|
4
|
+
argument-hint: The idea itself โ a sentence to a couple of paragraphs (e.g., "add a dark-mode toggle to the settings page"), optionally "for <venture>" (hub only, e.g. "save this idea for ordo โ โฆ")
|
|
5
5
|
agent: agent
|
|
6
6
|
---
|
|
7
7
|
|
|
@@ -9,8 +9,9 @@ agent: agent
|
|
|
9
9
|
|
|
10
10
|
- This spell saves a short idea into `IDEAS.md` at the repo root with a timestamp, so a good thought is not lost between sessions.
|
|
11
11
|
- It is deliberately fast and low-friction: no approval gate, no multi-step proposal โ capture and confirm.
|
|
12
|
-
- Use it the moment an idea occurs to you. Triage later with `spell-todo` or `spell-suggest-feature`.
|
|
12
|
+
- Use it the moment an idea occurs to you. Triage later with `spell-todo` or `spell-suggest-feature`; in a hub, promote with `spell-manifest`.
|
|
13
13
|
- This is the lightweight counterpart to `spell-document` (which formalizes a whole conversation into polished docs).
|
|
14
|
+
- **In a hub repo:** "save this idea for <venture>" targets that venture's own `IDEAS.md` book instead of the hub root โ private by default, including for ventures whose own repo is public.
|
|
14
15
|
|
|
15
16
|
---
|
|
16
17
|
|
|
@@ -18,6 +19,36 @@ Capture the user's idea into the idea inbox with minimal ceremony.
|
|
|
18
19
|
|
|
19
20
|
The user's input IS the idea. If no idea text was provided, ask one short question: _"What's the idea?"_ and stop until they answer.
|
|
20
21
|
|
|
22
|
+
## Step 0 โ Venture Targeting (Hub Only)
|
|
23
|
+
|
|
24
|
+
If the input names a venture ("save this idea for ordo", `--venture <slug>`), resolve it through `ventures/registry.json`'s aliases first (exact slug โ alias โ closest match offered โ never guessed). Unknown slug:
|
|
25
|
+
|
|
26
|
+
```
|
|
27
|
+
No venture "<slug>" under ventures/ (closest: ordovica, tidewright).
|
|
28
|
+
1) use <closest> 2) save to hub root IDEAS.md 3) cancel (create the venture first: spell-summon-venture)
|
|
29
|
+
```
|
|
30
|
+
|
|
31
|
+
Never silently create a venture folder.
|
|
32
|
+
|
|
33
|
+
If `role` in `.arcane.json` is not `"hub"`, venture-targeting phrasing is refused:
|
|
34
|
+
|
|
35
|
+
```
|
|
36
|
+
Venture targeting works only in the hub repo (role: "hub" in .arcane.json). This repo has no venture books.
|
|
37
|
+
1) save to this repo's IDEAS.md (venture reference removed)
|
|
38
|
+
2) skip โ capture it in the hub: spell-save-idea --venture <slug> "<idea>"
|
|
39
|
+
Which? (1/2)
|
|
40
|
+
```
|
|
41
|
+
|
|
42
|
+
If option 1 is chosen and the named venture is a *different* venture than this repo's own, strip that name from the idea text before writing it โ a sibling venture's name must never land in a consumer repo's `IDEAS.md`. If it's this repo's own venture, keep the text as given.
|
|
43
|
+
|
|
44
|
+
An idea that only *mentions* a venture, without targeting phrasing, is not redirected โ proceed with the hub root and append a non-blocking hint to the Step 3 confirmation instead (speed rule: don't block on a maybe):
|
|
45
|
+
|
|
46
|
+
```
|
|
47
|
+
(mentions ordovica โ re-save with --venture ordovica, or route it later with spell-manifest)
|
|
48
|
+
```
|
|
49
|
+
|
|
50
|
+
When targeting a venture book that doesn't exist yet as a file, create it from the venture-template `IDEAS.md` stub (same header convention as the hub root, below) with the venture's name filled in. Tolerate operator YAML frontmatter above either book's header โ always append after the final `---` divider, never before it.
|
|
51
|
+
|
|
21
52
|
## Step 1 โ Normalize the Idea
|
|
22
53
|
|
|
23
54
|
- Take the user's input verbatim as the core idea.
|
|
@@ -29,7 +60,7 @@ The user's input IS the idea. If no idea text was provided, ask one short questi
|
|
|
29
60
|
|
|
30
61
|
## Step 2 โ Append to IDEAS.md
|
|
31
62
|
|
|
32
|
-
Append (never overwrite) an entry to `IDEAS.md`
|
|
63
|
+
Append (never overwrite) an entry to `IDEAS.md` โ the repo root, or the resolved venture's own book from Step 0.
|
|
33
64
|
|
|
34
65
|
Entry format:
|
|
35
66
|
|
|
@@ -69,7 +100,7 @@ Print a single concise confirmation, nothing more:
|
|
|
69
100
|
After confirming, add at most one short line offering a next step **only if the idea is obviously
|
|
70
101
|
actionable or product-shaped**:
|
|
71
102
|
|
|
72
|
-
> Want to turn this into a tracked item? Run `spell-todo` (task) or `spell-suggest-feature` (product idea).
|
|
103
|
+
> Want to turn this into a tracked item? Run `spell-todo` (task) or `spell-suggest-feature` (product idea). In a hub, `spell-manifest` promotes it downstream once ready.
|
|
73
104
|
|
|
74
105
|
Do not ask follow-up questions. Do not commit โ leave that to `spell-commit-work`.
|
|
75
106
|
|
|
@@ -0,0 +1,109 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: Spell โ Summon Venture
|
|
3
|
+
description: Create a new venture in a hub repo โ folder, overview/config/legal docs, idea and todo books, and a registry entry โ in one hub-gated move.
|
|
4
|
+
argument-hint: Venture Name | Venture Type | One-line description
|
|
5
|
+
agent: agent
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
## Executive Summary
|
|
9
|
+
|
|
10
|
+
- This prompt creates a new venture in a **hub** repo: the venture folder, its starter docs, its two idea/todo books, and its `ventures/registry.json` entry โ one operation instead of several manual steps.
|
|
11
|
+
- **Hub-gated:** requires `role: "hub"` in `.arcane.json`. Refuses cleanly in a consumer repo, pointing at the right place to capture the idea instead.
|
|
12
|
+
- Use this when starting a new venture (business, product, or personal project) that the hub should track.
|
|
13
|
+
- Input format is: `Venture Name | Venture Type | Description` โ prompt will ask for missing fields.
|
|
14
|
+
- Renamed from `spell-bootstrap-business` โ venture books and the registry didn't exist when that spell was named. Clean rename, no compatibility alias, per [[DECISIONS#ARC-008|ARC-008]]'s precedent.
|
|
15
|
+
|
|
16
|
+
---
|
|
17
|
+
|
|
18
|
+
## Step 0 โ Hub Gate
|
|
19
|
+
|
|
20
|
+
Read `.arcane.json`. If `role` is not `"hub"`, stop and report:
|
|
21
|
+
|
|
22
|
+
> `spell-summon-venture` runs only in a hub repo (`role: "hub"` in `.arcane.json`). This repo is a consumer. If you're capturing an idea for a venture that should exist, save it in the hub instead โ ask there for `spell-save-idea --venture <new-slug> "<idea>"`, which offers to scaffold the venture book if the slug doesn't exist yet.
|
|
23
|
+
|
|
24
|
+
Do not create anything. Do not infer hub status from a `ventures/` directory existing โ that directory can legitimately exist in a consumer repo too (this exact spell creates it there in non-hub contexts under the old model; the gate is what changed).
|
|
25
|
+
|
|
26
|
+
If `role` is `"hub"`, resolve `{BUSINESS_ROOT}` from `.arcane.json`'s `business_root` field (default `ventures/`) and continue.
|
|
27
|
+
|
|
28
|
+
## Step 1 โ Gather Venture Details
|
|
29
|
+
|
|
30
|
+
Parse the prompt argument as:
|
|
31
|
+
`<Venture Name> | <Venture Type> | <One-line Description>`
|
|
32
|
+
|
|
33
|
+
If any required value is missing, ask only for missing fields. Additionally ask for **ownership** if not stated or inferable from context: `llc` (company-owned), `co-venture` (shared with an external partner), or `personal` (non-commercial, no co-owner) โ never guess this; it's load-bearing for the registry and for later idea-lifecycle disclosure decisions.
|
|
34
|
+
|
|
35
|
+
Use these files first (each is optional โ if missing, proceed as noted):
|
|
36
|
+
|
|
37
|
+
- [playbooks/new-business-setup.md](../../playbooks/new-business-setup.md) โ setup playbook. If `playbooks/` doesn't exist, skip and derive steps from the venture-type checklist below.
|
|
38
|
+
- [naming-conventions.md](../../.arcane/governance/naming-conventions.md) โ slug/file naming rules. If missing, default to lowercase-with-dashes slugs.
|
|
39
|
+
- [ventures/\_template/overview.md](../../ventures/_template/overview.md) โ overview template. If missing, generate a minimal overview from the fields below.
|
|
40
|
+
- [.arcane/templates/venture-template/IDEAS.md](../../.arcane/templates/venture-template/IDEAS.md) and [.arcane/templates/venture-template/TODO.md](../../.arcane/templates/venture-template/TODO.md) โ book stubs. If missing, use the header format from [[spell-save-idea|spell-save-idea]] / [[spell-todo|spell-todo]].
|
|
41
|
+
- [README.md](../../README.md) โ repo navigation. If missing, skip cross-linking.
|
|
42
|
+
- [project.md](../../project.md) โ project context. If missing, skip.
|
|
43
|
+
|
|
44
|
+
## Step 2 โ Create the Venture
|
|
45
|
+
|
|
46
|
+
1. Create `{BUSINESS_ROOT}/<slug>/` using existing repo style (lowercase with dashes). If `{BUSINESS_ROOT}` doesn't exist yet, create it.
|
|
47
|
+
2. Create these files:
|
|
48
|
+
- `overview.md` from template, filled with provided venture details and current date.
|
|
49
|
+
- `config.md` with placeholders for `{PLATFORM_NAME}` configuration, data paths, and platform integrations. (`{PLATFORM_NAME}` is the org's operating platform โ resolve from `.arcane.json`/frontmatter; ask if unset.)
|
|
50
|
+
- `legal.md` with baseline legal checklist and links to relevant repo docs.
|
|
51
|
+
- `IDEAS.md` from the venture-template stub, with the venture name filled in.
|
|
52
|
+
- `TODO.md` from the venture-template stub, with the venture name filled in.
|
|
53
|
+
3. Add a startup checklist tailored to the venture type (`e-commerce`, `app`, `protocol`, `service`, or `personal`).
|
|
54
|
+
|
|
55
|
+
## Step 3 โ Register the Venture
|
|
56
|
+
|
|
57
|
+
Open (or create, with the standard header โ see `ventures/registry.json`'s own `_comment` field for the expected shape) `ventures/registry.json` and append an entry keyed by the slug:
|
|
58
|
+
|
|
59
|
+
```json
|
|
60
|
+
"<slug>": {
|
|
61
|
+
"name": "<Venture Name>",
|
|
62
|
+
"aliases": [],
|
|
63
|
+
"status": "idea",
|
|
64
|
+
"visibility": "private",
|
|
65
|
+
"ownership": "<llc|co-venture|personal>",
|
|
66
|
+
"tracking": "none",
|
|
67
|
+
"repos": []
|
|
68
|
+
}
|
|
69
|
+
```
|
|
70
|
+
|
|
71
|
+
`status` starts `"idea"` and `tracking` starts `"none"` โ this spell only creates the hub-side folder, it does not provision a code repo or tracker project. Update the `repos[]` array separately once a real repo exists. `visibility` defaults to `"private"`; only change it if the operator states the venture is public-facing at creation time.
|
|
72
|
+
|
|
73
|
+
## Step 4 โ Cross-Links and Summary
|
|
74
|
+
|
|
75
|
+
Add cross-links only when appropriate:
|
|
76
|
+
|
|
77
|
+
- Update [README.md](../../README.md) only if there is a clear place for venture navigation.
|
|
78
|
+
- Update [TODO.md](../../TODO.md) (hub root) only with concrete, actionable next tasks โ venture-specific tasks belong in the new venture's own `TODO.md`, not here.
|
|
79
|
+
|
|
80
|
+
Return a ready-to-start summary.
|
|
81
|
+
|
|
82
|
+
Output format:
|
|
83
|
+
|
|
84
|
+
## Created
|
|
85
|
+
|
|
86
|
+
- File and folder paths created, including the `ventures/registry.json` entry.
|
|
87
|
+
|
|
88
|
+
## Defaults Applied
|
|
89
|
+
|
|
90
|
+
- Slug, ownership, naming decisions, and template assumptions used.
|
|
91
|
+
|
|
92
|
+
## Immediate Next Actions
|
|
93
|
+
|
|
94
|
+
1. Action one.
|
|
95
|
+
2. Action two.
|
|
96
|
+
3. Action three.
|
|
97
|
+
4. Action four.
|
|
98
|
+
5. Action five.
|
|
99
|
+
|
|
100
|
+
## Questions To Finalize
|
|
101
|
+
|
|
102
|
+
- Up to 3 targeted questions, or `None`.
|
|
103
|
+
|
|
104
|
+
Rules:
|
|
105
|
+
|
|
106
|
+
- Follow repository frontmatter conventions.
|
|
107
|
+
- Do not create Azure resources directly; document steps only.
|
|
108
|
+
- Keep generated docs editable and operational, not verbose.
|
|
109
|
+
- Never run outside a hub repo. Never infer hub status โ only `role: "hub"` counts.
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: Spell โ Todo
|
|
3
|
-
description: Elaborate a raw idea into one or more well-scoped TODO items and place them in the right document(s).
|
|
4
|
-
argument-hint: The raw idea to elaborate (e.g., "add spending limits doc", "automate ADR numbering", "build a dashboard for {AGENT_NAME}"). `{AGENT_NAME}` resolves from `.arcane.json` / frontmatter; ask if unset.
|
|
3
|
+
description: Elaborate a raw idea into one or more well-scoped TODO items and place them in the right document(s). In a hub repo, optionally target a venture's own TODO book, or sweep every book's open-item counts.
|
|
4
|
+
argument-hint: The raw idea to elaborate (e.g., "add spending limits doc", "automate ADR numbering", "build a dashboard for {AGENT_NAME}"), optionally "for <venture>" (hub only). `{AGENT_NAME}` resolves from `.arcane.json` / frontmatter; ask if unset. Use `--sweep` instead to report open-item counts across every book.
|
|
5
5
|
agent: agent
|
|
6
6
|
---
|
|
7
7
|
|
|
@@ -11,16 +11,52 @@ agent: agent
|
|
|
11
11
|
- It reads the current TODO landscape and repo structure to avoid duplicates and pick the right home.
|
|
12
12
|
- Use this any time you have an idea mid-session and don't want to lose it or park it in the wrong place.
|
|
13
13
|
- If the idea is ADR-worthy or journal-worthy, it flags that and routes accordingly.
|
|
14
|
+
- **In a hub repo:** "add a todo for <venture>" targets that venture's own `TODO.md` book instead of the hub root. `--sweep` skips elaboration entirely and reports new/open counts across every book (hub root + every venture).
|
|
14
15
|
|
|
15
16
|
---
|
|
16
17
|
|
|
17
|
-
|
|
18
|
+
## Sweep Mode (`--sweep`)
|
|
19
|
+
|
|
20
|
+
If the argument is (or starts with) `--sweep`, skip every other step in this spell entirely and run this instead:
|
|
21
|
+
|
|
22
|
+
- **In a hub repo:** report `status: new` counts and oldest-entry age for the hub root `TODO.md` plus every `ventures/<slug>/TODO.md` that exists. Group by book, point at `spell-manifest` for entries ready to promote. Report-only โ no edits.
|
|
23
|
+
- **In a consumer repo:** report the same, for the repo-root `TODO.md` only (no venture books exist there).
|
|
24
|
+
|
|
25
|
+
Output format:
|
|
26
|
+
|
|
27
|
+
```
|
|
28
|
+
Todo sweep โ N books, M open items
|
|
29
|
+
|
|
30
|
+
hub TODO.md 12 open, oldest 2026-07-14
|
|
31
|
+
ventures/ordovica/TODO.md 3 open, oldest 2026-08-10
|
|
32
|
+
```
|
|
33
|
+
|
|
34
|
+
## Step 0 โ Venture Targeting (Hub Only)
|
|
35
|
+
|
|
36
|
+
If the input names a venture ("add a todo for ordo", `--venture <slug>`), resolve it through `ventures/registry.json`'s aliases first (exact slug โ alias โ closest match offered โ never guessed). Unknown slug:
|
|
37
|
+
|
|
38
|
+
```
|
|
39
|
+
No venture "<slug>" under ventures/ (closest: ordovica, tidewright).
|
|
40
|
+
1) use <closest> 2) add to hub root TODO.md 3) cancel (create the venture first: spell-summon-venture)
|
|
41
|
+
```
|
|
42
|
+
|
|
43
|
+
If `role` in `.arcane.json` is not `"hub"`, venture-targeting phrasing is refused:
|
|
44
|
+
|
|
45
|
+
> Venture targeting works only in the hub repo (`role: "hub"` in `.arcane.json`). This repo has no venture books.
|
|
46
|
+
> 1) add to this repo's TODO.md (venture reference removed)
|
|
47
|
+
> 2) skip โ capture it in the hub: `spell-todo --venture <slug> "<idea>"`
|
|
48
|
+
|
|
49
|
+
If option 1 is chosen and the named venture is a *different* venture than this repo's own, strip that name from the item text before writing it โ a sibling venture's name must never land in a consumer repo's `TODO.md`. If it's this repo's own venture, keep the text as given.
|
|
50
|
+
|
|
51
|
+
An idea that only *mentions* a venture, without targeting phrasing, is not redirected โ proceed with the hub root as normal (speed rule: don't block on a maybe).
|
|
52
|
+
|
|
53
|
+
Elaborate the idea given by the user and add it to the right document(s) โ the hub root `TODO.md` by default, or the resolved venture's own `TODO.md` when targeted.
|
|
18
54
|
|
|
19
55
|
The raw idea from the user is in the prompt argument. If no argument was provided, ask the user to describe the idea before proceeding.
|
|
20
56
|
|
|
21
57
|
Use these files first:
|
|
22
58
|
|
|
23
|
-
- [TODO.md](../../TODO.md) โ section structure and existing items (avoid duplicates)
|
|
59
|
+
- [TODO.md](../../TODO.md) โ section structure and existing items (avoid duplicates); or the targeted venture's own `TODO.md`
|
|
24
60
|
- [DECISIONS.md](../../DECISIONS.md) โ ADR registry (check if the idea is decision-worthy)
|
|
25
61
|
- [README.md](../../README.md) โ repo structure (find the right canonical doc to reference)
|
|
26
62
|
- [project.md](../../project.md) โ active priorities (calibrate urgency)
|