incitaciones 0.2.0 → 0.3.1
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 +57 -0
- package/content/distilled/close/SKILL.md +68 -0
- package/content/distilled/create-issues/SKILL.md +10 -0
- package/content/distilled/implement-documentation/SKILL.md +29 -0
- package/content/distilled/implement-documentation/references/anti-patterns.md +35 -0
- package/content/distilled/implement-documentation/references/diataxis-implementation.md +31 -0
- package/content/distilled/implement-documentation/references/templates.md +115 -0
- package/content/distilled/implement-documentation/references/tooling-comparison.md +46 -0
- package/content/distilled/implement-documentation/references/versioning.md +31 -0
- package/content/distilled/issue-review/SKILL.md +5 -4
- package/content/distilled/issue-review/references/pass-0-preflight.md +37 -0
- package/content/distilled/next/SKILL.md +54 -0
- package/content/distilled/park/SKILL.md +98 -0
- package/content/distilled/renew/SKILL.md +164 -0
- package/content/distilled/research-documentation/SKILL.md +29 -0
- package/content/distilled/research-documentation/references/checklist.md +58 -0
- package/content/distilled/research-documentation/references/llm-readiness.md +43 -0
- package/content/distilled/research-documentation/references/metrics.md +42 -0
- package/content/distilled/research-documentation/references/report-template.md +42 -0
- package/content/distilled/review-documentation/SKILL.md +49 -0
- package/content/distilled/review-documentation/references/ai-readiness-criteria.md +38 -0
- package/content/distilled/whisper/SKILL.md +83 -0
- package/content/distilled/whisper/references/check.md +33 -0
- package/content/distilled/whisper/references/decommission.md +53 -0
- package/content/distilled/whisper/references/init.md +103 -0
- package/content/distilled/whisper/references/link.md +70 -0
- package/content/distilled/whisper/references/status.md +49 -0
- package/content/manifest.json +458 -11
- package/package.json +2 -1
- package/pi-package/prompts/close.md +10 -0
- package/pi-package/prompts/next.md +10 -0
- package/pi-package/prompts/park.md +10 -0
- package/pi-package/prompts/renew.md +10 -0
- package/pi-package/prompts/whisper.md +10 -0
- package/pi-package/skills/close/SKILL.md +74 -0
- package/pi-package/skills/create-issues/SKILL.md +10 -0
- package/pi-package/skills/implement-documentation/SKILL.md +18 -57
- package/pi-package/skills/implement-documentation/references/anti-patterns.md +35 -0
- package/pi-package/skills/implement-documentation/references/diataxis-implementation.md +31 -0
- package/pi-package/skills/implement-documentation/references/templates.md +115 -0
- package/pi-package/skills/implement-documentation/references/tooling-comparison.md +46 -0
- package/pi-package/skills/implement-documentation/references/versioning.md +31 -0
- package/pi-package/skills/issue-review/SKILL.md +5 -4
- package/pi-package/skills/issue-review/references/pass-0-preflight.md +37 -0
- package/pi-package/skills/next/SKILL.md +60 -0
- package/pi-package/skills/park/SKILL.md +104 -0
- package/pi-package/skills/renew/SKILL.md +170 -0
- package/pi-package/skills/research-documentation/SKILL.md +19 -69
- package/pi-package/skills/research-documentation/references/checklist.md +58 -0
- package/pi-package/skills/research-documentation/references/llm-readiness.md +43 -0
- package/pi-package/skills/research-documentation/references/metrics.md +42 -0
- package/pi-package/skills/research-documentation/references/report-template.md +42 -0
- package/pi-package/skills/review-documentation/SKILL.md +45 -40
- package/pi-package/skills/review-documentation/references/ai-readiness-criteria.md +38 -0
- package/pi-package/skills/whisper/SKILL.md +89 -0
- package/pi-package/skills/whisper/references/check.md +33 -0
- package/pi-package/skills/whisper/references/decommission.md +53 -0
- package/pi-package/skills/whisper/references/init.md +103 -0
- package/pi-package/skills/whisper/references/link.md +70 -0
- package/pi-package/skills/whisper/references/status.md +49 -0
- package/scripts/generate-pi-resources.mjs +122 -0
- package/content/distilled/implement-documentation.md +0 -68
- package/content/distilled/research-documentation.md +0 -79
- package/content/distilled/review-documentation.md +0 -44
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
# Check
|
|
2
|
+
|
|
3
|
+
Validate the workspace before starting work. Detects stale branch slots and worktree reuse. Called automatically by `renew` when `~/.whisper/` exists.
|
|
4
|
+
|
|
5
|
+
## Steps
|
|
6
|
+
|
|
7
|
+
1. Get repo URL and branch slug:
|
|
8
|
+
```bash
|
|
9
|
+
repo_url=$(git remote get-url origin 2>/dev/null | sed 's|https://||;s|git@||;s|\.git$||')
|
|
10
|
+
branch=$(git rev-parse --abbrev-ref HEAD)
|
|
11
|
+
branch_slug=$(echo "$branch" | sed 's|/|--|g')
|
|
12
|
+
context_path=~/.whisper/repos/"${repo_url}"/branches/"${branch_slug}"/context.md
|
|
13
|
+
```
|
|
14
|
+
|
|
15
|
+
2. **If `~/.whisper/` doesn't exist:** offer full init:
|
|
16
|
+
```
|
|
17
|
+
⚠ ~/.whisper/ not found. Run `/w init` to create the workspace.
|
|
18
|
+
```
|
|
19
|
+
|
|
20
|
+
3. **If `context.md` exists:** output one confirmation line and return.
|
|
21
|
+
```
|
|
22
|
+
✓ Workspace active: ~/.whisper/repos/<repo>/branches/<slug>/
|
|
23
|
+
```
|
|
24
|
+
|
|
25
|
+
4. **If the branch directory doesn't exist:**
|
|
26
|
+
```
|
|
27
|
+
⚠ No workspace slot for branch: <branch>
|
|
28
|
+
~/.whisper/repos/<repo>/branches/<slug>/ does not exist yet.
|
|
29
|
+
|
|
30
|
+
Activate new slot? [Y/n]
|
|
31
|
+
```
|
|
32
|
+
- Y → run **init** for the current branch.
|
|
33
|
+
- N → print "Staying without a slot. Run `/w init` when ready." and stop.
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
# Decommission
|
|
2
|
+
|
|
3
|
+
Safely wind down a worktree or branch: defer open work under the branch epic, record a final note, then print the removal command.
|
|
4
|
+
|
|
5
|
+
## Steps
|
|
6
|
+
|
|
7
|
+
1. Run **check** first. Confirm slot exists before decommissioning.
|
|
8
|
+
|
|
9
|
+
2. Get repo URL and branch slug:
|
|
10
|
+
```bash
|
|
11
|
+
repo_url=$(git remote get-url origin 2>/dev/null | sed 's|https://||;s|git@||;s|\.git$||')
|
|
12
|
+
branch=$(git rev-parse --abbrev-ref HEAD)
|
|
13
|
+
branch_slug=$(echo "$branch" | sed 's|/|--|g')
|
|
14
|
+
branch_dir=~/.whisper/repos/"${repo_url}"/branches/"${branch_slug}"
|
|
15
|
+
context_path="$branch_dir/context.md"
|
|
16
|
+
```
|
|
17
|
+
|
|
18
|
+
3. Read `beads-epic:` from `context.md`.
|
|
19
|
+
|
|
20
|
+
4. If beads is available, get all open work under that epic:
|
|
21
|
+
```bash
|
|
22
|
+
bd children <epic-id> --json 2>/dev/null
|
|
23
|
+
```
|
|
24
|
+
|
|
25
|
+
5. If any open children found, defer them:
|
|
26
|
+
```bash
|
|
27
|
+
bd defer <id>
|
|
28
|
+
```
|
|
29
|
+
|
|
30
|
+
6. Defer the epic itself:
|
|
31
|
+
```bash
|
|
32
|
+
bd defer <epic-id>
|
|
33
|
+
```
|
|
34
|
+
|
|
35
|
+
7. Record the decommission as a note on the epic:
|
|
36
|
+
```bash
|
|
37
|
+
bd note <epic-id> "Decommissioned: branch <branch> on <date>. State: <summary>. Resume via: /w init on branch <branch> — bd search '<branch>' will find this epic."
|
|
38
|
+
```
|
|
39
|
+
|
|
40
|
+
8. Print the removal command — do NOT run it:
|
|
41
|
+
```
|
|
42
|
+
Ready to remove worktree. Run:
|
|
43
|
+
git worktree remove <path>
|
|
44
|
+
|
|
45
|
+
Deferred epic <epic-id> and <n> children. To find them later:
|
|
46
|
+
bd list --status deferred --label branch:<branch>
|
|
47
|
+
```
|
|
48
|
+
|
|
49
|
+
## Rules
|
|
50
|
+
|
|
51
|
+
- Never run `git worktree remove` automatically — always print the command.
|
|
52
|
+
- Never close beads issues during decommission — only defer. Closing is intentional.
|
|
53
|
+
- Branch slots in `~/.whisper/` are not automatically removed when a branch is merged. The slot serves as an archive; the epic (found via `bd search`) can be reused if the same branch name comes back.
|
|
@@ -0,0 +1,103 @@
|
|
|
1
|
+
# Init
|
|
2
|
+
|
|
3
|
+
Create `~/.whisper/` and the current workspace slot.
|
|
4
|
+
|
|
5
|
+
## Steps
|
|
6
|
+
|
|
7
|
+
1. Get context:
|
|
8
|
+
```bash
|
|
9
|
+
pwd
|
|
10
|
+
git rev-parse --abbrev-ref HEAD
|
|
11
|
+
basename $(git rev-parse --show-toplevel 2>/dev/null) # repo name
|
|
12
|
+
git rev-parse --git-common-dir 2>/dev/null # confirms worktree vs main
|
|
13
|
+
date +%Y-%m-%d
|
|
14
|
+
```
|
|
15
|
+
|
|
16
|
+
2. Create `~/.whisper/` if it doesn't exist:
|
|
17
|
+
```bash
|
|
18
|
+
mkdir -p ~/.whisper/repos
|
|
19
|
+
```
|
|
20
|
+
|
|
21
|
+
3. Compute the repo path and branch slug:
|
|
22
|
+
```bash
|
|
23
|
+
repo_url=$(git remote get-url origin 2>/dev/null | sed 's|https://||;s|git@||;s|\.git$||')
|
|
24
|
+
branch=$(git rev-parse --abbrev-ref HEAD)
|
|
25
|
+
branch_slug=$(echo "$branch" | sed 's|/|--|g')
|
|
26
|
+
```
|
|
27
|
+
|
|
28
|
+
4. Create the repo & branch directory:
|
|
29
|
+
```bash
|
|
30
|
+
mkdir -p ~/.whisper/repos/"${repo_url}"/branches/"${branch_slug}"
|
|
31
|
+
wk_dir=$(basename "$(git rev-parse --git-common-dir 2>/dev/null || echo '.git')" | sed 's|\.git$||')
|
|
32
|
+
[ -n "$wk_dir" ] && mkdir -p ~/.whisper/repos/"${repo_url}"/worktrees/"${wk_dir}"
|
|
33
|
+
```
|
|
34
|
+
|
|
35
|
+
5. Create `~/.whisper/rules.md` if it doesn't exist:
|
|
36
|
+
```markdown
|
|
37
|
+
# Global Agent Rules
|
|
38
|
+
|
|
39
|
+
> Standing instructions for the agent, independent of any repo or branch.
|
|
40
|
+
> Append here for rules that apply everywhere.
|
|
41
|
+
```
|
|
42
|
+
|
|
43
|
+
6. Create the repo `env.md` if it doesn't exist:
|
|
44
|
+
```markdown
|
|
45
|
+
# Environment — <repo-name>
|
|
46
|
+
|
|
47
|
+
> Repo-wide setup knowledge. True regardless of which branch or worktree.
|
|
48
|
+
> Deploy commands, gateway limits, auth quirks that apply everywhere.
|
|
49
|
+
> Worktree-specific setup (ports, venvs, local creds) goes in worktrees/<name>/env.md
|
|
50
|
+
```
|
|
51
|
+
|
|
52
|
+
7. Create the worktree `env.md` if it doesn't exist:
|
|
53
|
+
```markdown
|
|
54
|
+
# Worktree — <worktree-name>
|
|
55
|
+
|
|
56
|
+
> Worktree-specific setup. Credentials, ports, venv/docker specifics for THIS checkout only.
|
|
57
|
+
```
|
|
58
|
+
|
|
59
|
+
8. Create `context.md`:
|
|
60
|
+
```markdown
|
|
61
|
+
# Workspace Context — <full-branch-name>
|
|
62
|
+
|
|
63
|
+
repo: <repo-url>
|
|
64
|
+
branch: <full-branch-name>
|
|
65
|
+
worktree: <worktree-dir-name>
|
|
66
|
+
path: <absolute-path>
|
|
67
|
+
created: <YYYY-MM-DD>
|
|
68
|
+
beads-epic:
|
|
69
|
+
```
|
|
70
|
+
|
|
71
|
+
9. Create `plan.md` stub:
|
|
72
|
+
```markdown
|
|
73
|
+
# Plan — <full-branch-name>
|
|
74
|
+
|
|
75
|
+
> No plan yet. Write a plan here, then run `/w link` to create beads issues.
|
|
76
|
+
```
|
|
77
|
+
|
|
78
|
+
10. Create `notes.md` stub:
|
|
79
|
+
```markdown
|
|
80
|
+
# Notes — <full-branch-name>
|
|
81
|
+
```
|
|
82
|
+
|
|
83
|
+
11. If beads is available, find or create the branch epic:
|
|
84
|
+
```bash
|
|
85
|
+
bd search "<branch>" --status all 2>/dev/null
|
|
86
|
+
```
|
|
87
|
+
- If an epic already matches, reuse its ID and update `beads-epic:` in `context.md`.
|
|
88
|
+
- If the work is substantial enough, create one: `bd create "<branch>" --type epic --label "branch:<branch>" --silent`
|
|
89
|
+
- For a single-ticket fix, skip the epic and let the ticket ID stand in for `beads-epic:`.
|
|
90
|
+
|
|
91
|
+
12. Confirm:
|
|
92
|
+
```
|
|
93
|
+
✓ ~/.whisper/ initialized
|
|
94
|
+
|
|
95
|
+
Repo: <repo-url>
|
|
96
|
+
Branch: <branch> → branches/<slug>/
|
|
97
|
+
Epic: <id | none — will be created by /w link>
|
|
98
|
+
rules.md: [created | exists]
|
|
99
|
+
env.md: [created | exists]
|
|
100
|
+
worktree/env.md: [created | exists]
|
|
101
|
+
|
|
102
|
+
Run `/w link` after writing a plan.
|
|
103
|
+
```
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
# Link
|
|
2
|
+
|
|
3
|
+
Attach a plan file to the workspace and create beads issues for each phase, as children of the branch epic. Run this after writing or generating a plan.
|
|
4
|
+
|
|
5
|
+
This mode is self-contained — it does NOT require `create-plan` to have been used. The plan can come from anywhere: manually written, generated by any tool, or copied in.
|
|
6
|
+
|
|
7
|
+
## Steps
|
|
8
|
+
|
|
9
|
+
1. Run **check** first to confirm the slot exists.
|
|
10
|
+
|
|
11
|
+
2. Get repo URL and branch slug:
|
|
12
|
+
```bash
|
|
13
|
+
repo_url=$(git remote get-url origin 2>/dev/null | sed 's|https://||;s|git@||;s|\.git$||')
|
|
14
|
+
branch=$(git rev-parse --abbrev-ref HEAD)
|
|
15
|
+
branch_slug=$(echo "$branch" | sed 's|/|--|g')
|
|
16
|
+
branch_dir=~/.whisper/repos/"${repo_url}"/branches/"${branch_slug}"
|
|
17
|
+
context_path="$branch_dir/context.md"
|
|
18
|
+
plan_path="$branch_dir/plan.md"
|
|
19
|
+
```
|
|
20
|
+
|
|
21
|
+
3. Determine the plan file path:
|
|
22
|
+
- If the user provided a path (`/w link path/to/plan.md`): use that.
|
|
23
|
+
- Otherwise: use `plan.md`.
|
|
24
|
+
- If neither exists: tell the user to write a plan first and stop.
|
|
25
|
+
|
|
26
|
+
4. If the source path is not `plan.md`, copy it in:
|
|
27
|
+
```bash
|
|
28
|
+
cp <source-path> "$branch_dir/plan.md"
|
|
29
|
+
```
|
|
30
|
+
|
|
31
|
+
5. Read `plan.md` and extract phase headings.
|
|
32
|
+
|
|
33
|
+
6. Ensure the branch epic exists:
|
|
34
|
+
- If `context.md`'s `beads-epic:` is already set, use it.
|
|
35
|
+
- If blank and the plan has more than one phase: create it.
|
|
36
|
+
- If blank and the plan is a single task: skip the epic.
|
|
37
|
+
|
|
38
|
+
7. For each phase/task, create a beads issue as a child of the branch epic:
|
|
39
|
+
```bash
|
|
40
|
+
bd create "<phase-title>" --type task --parent <epic-id>
|
|
41
|
+
```
|
|
42
|
+
|
|
43
|
+
8. Only if phases are genuinely sequential, chain dependencies:
|
|
44
|
+
```bash
|
|
45
|
+
bd dep <id-N> --blocks <id-N+1>
|
|
46
|
+
```
|
|
47
|
+
|
|
48
|
+
9. Update `context.md` — set `beads-epic:` to the epic (or single-ticket) ID.
|
|
49
|
+
|
|
50
|
+
10. **After each successful creation**, extract the `**Files / Systems:**` bullet list from the issue description and store it as structured metadata:
|
|
51
|
+
```bash
|
|
52
|
+
bd update <id> --metadata '{"files": ["path/to/file1.py", "path/to/file2.py"]}'
|
|
53
|
+
```
|
|
54
|
+
This enables automated file-conflict detection by concurrent agents. If the Files/Systems section is empty or contains only subsystem names without concrete paths, **stop and ask for specific file paths** — a ticket without concrete paths cannot participate in conflict detection.
|
|
55
|
+
|
|
56
|
+
11. Confirm:
|
|
57
|
+
```
|
|
58
|
+
Linked plan to workspace: branches/<slug>/
|
|
59
|
+
Epic: <epic-id> — <branch>
|
|
60
|
+
Created <n> child issues:
|
|
61
|
+
<id> Phase 1: ...
|
|
62
|
+
```
|
|
63
|
+
|
|
64
|
+
### Relinking
|
|
65
|
+
|
|
66
|
+
If `context.md` already has a `beads-epic:` set, ask before creating new children:
|
|
67
|
+
```
|
|
68
|
+
context.md already links epic <id> with <n> children.
|
|
69
|
+
Add new phases as more children of the same epic? [Y/n]
|
|
70
|
+
```
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
# Status
|
|
2
|
+
|
|
3
|
+
Show the state of the current workspace.
|
|
4
|
+
|
|
5
|
+
## Steps
|
|
6
|
+
|
|
7
|
+
1. Get repo URL and branch slug:
|
|
8
|
+
```bash
|
|
9
|
+
repo_url=$(git remote get-url origin 2>/dev/null | sed 's|https://||;s|git@||;s|\.git$||')
|
|
10
|
+
branch=$(git rev-parse --abbrev-ref HEAD)
|
|
11
|
+
branch_slug=$(echo "$branch" | sed 's|/|--|g')
|
|
12
|
+
context_path=~/.whisper/repos/"${repo_url}"/branches/"${branch_slug}"/context.md
|
|
13
|
+
```
|
|
14
|
+
|
|
15
|
+
2. If `context.md` doesn't exist, delegate to **check** mode and stop.
|
|
16
|
+
|
|
17
|
+
3. Read `context.md` and extract: repo, branch, path, beads-epic.
|
|
18
|
+
|
|
19
|
+
4. Show `env.md` info:
|
|
20
|
+
```bash
|
|
21
|
+
date -r ~/.whisper/repos/"${repo_url}"/env.md "+%Y-%m-%d %H:%M" 2>/dev/null
|
|
22
|
+
```
|
|
23
|
+
|
|
24
|
+
5. Show the branch epic's tree if beads is available:
|
|
25
|
+
```bash
|
|
26
|
+
bd children <beads-epic> --pretty 2>/dev/null
|
|
27
|
+
```
|
|
28
|
+
|
|
29
|
+
6. Show plan status: is `plan.md` a stub or does it have real content?
|
|
30
|
+
|
|
31
|
+
7. Show all active branch slots for this repo (most recently modified first):
|
|
32
|
+
```bash
|
|
33
|
+
ls -t ~/.whisper/repos/"${repo_url}"/branches/ 2>/dev/null
|
|
34
|
+
```
|
|
35
|
+
|
|
36
|
+
### Output format
|
|
37
|
+
|
|
38
|
+
```
|
|
39
|
+
── Whisper: <repo> ──
|
|
40
|
+
Branch: <branch> (branches/<slug>/)
|
|
41
|
+
Plan: [exists | stub]
|
|
42
|
+
Epic: <id> — <n> issues (<open> open) [or: none linked yet]
|
|
43
|
+
|
|
44
|
+
Active branch slots:
|
|
45
|
+
<ls output>
|
|
46
|
+
|
|
47
|
+
Epic tree:
|
|
48
|
+
<bd children --pretty output, or "none">
|
|
49
|
+
```
|