incitaciones 0.2.0 → 0.3.0
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 +67 -0
- package/content/distilled/create-issues/SKILL.md +10 -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 +97 -0
- package/content/distilled/renew/SKILL.md +163 -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 +101 -3
- 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 +73 -0
- package/pi-package/skills/create-issues/SKILL.md +10 -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 +103 -0
- package/pi-package/skills/renew/SKILL.md +169 -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
|
@@ -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
|
+
```
|
package/content/manifest.json
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
{
|
|
2
|
-
"version": "2026-
|
|
2
|
+
"version": "2026-07-27",
|
|
3
3
|
"schema_version": "1.1",
|
|
4
4
|
"prompts": [
|
|
5
5
|
{
|
|
@@ -3021,6 +3021,93 @@
|
|
|
3021
3021
|
]
|
|
3022
3022
|
}
|
|
3023
3023
|
},
|
|
3024
|
+
{
|
|
3025
|
+
"name": "whisper",
|
|
3026
|
+
"type": "workflow",
|
|
3027
|
+
"title": "Whisper — Accumulated Operational Knowledge",
|
|
3028
|
+
"description": "Manage the ~/.whisper/ knowledge workspace: init, check, status, link plan, decommission, and knowledge routing",
|
|
3029
|
+
"source": "content/prompt-workflow-whisper.md",
|
|
3030
|
+
"distilled": "content/distilled/whisper/SKILL.md",
|
|
3031
|
+
"skill_format": "progressive-disclosure",
|
|
3032
|
+
"tags": [
|
|
3033
|
+
"workflow",
|
|
3034
|
+
"knowledge",
|
|
3035
|
+
"planning",
|
|
3036
|
+
"beads"
|
|
3037
|
+
],
|
|
3038
|
+
"bundles": [
|
|
3039
|
+
"essentials",
|
|
3040
|
+
"workflow"
|
|
3041
|
+
]
|
|
3042
|
+
},
|
|
3043
|
+
{
|
|
3044
|
+
"name": "close",
|
|
3045
|
+
"type": "workflow",
|
|
3046
|
+
"title": "Close Session",
|
|
3047
|
+
"description": "End-of-session wrap-up. Summarizes, logs to daily journal, routes knowledge to ~/.whisper/, commits, and clears context",
|
|
3048
|
+
"source": "content/prompt-workflow-close.md",
|
|
3049
|
+
"distilled": "content/distilled/close/SKILL.md",
|
|
3050
|
+
"skill_format": "single-file",
|
|
3051
|
+
"tags": [
|
|
3052
|
+
"workflow",
|
|
3053
|
+
"session",
|
|
3054
|
+
"journal"
|
|
3055
|
+
],
|
|
3056
|
+
"bundles": [
|
|
3057
|
+
"workflow"
|
|
3058
|
+
]
|
|
3059
|
+
},
|
|
3060
|
+
{
|
|
3061
|
+
"name": "park",
|
|
3062
|
+
"type": "workflow",
|
|
3063
|
+
"title": "Park Session",
|
|
3064
|
+
"description": "Snapshot current work before switching context. Logs to daily journal, releases ticket claims, records to ~/.whisper/",
|
|
3065
|
+
"source": "content/prompt-workflow-park.md",
|
|
3066
|
+
"distilled": "content/distilled/park/SKILL.md",
|
|
3067
|
+
"skill_format": "single-file",
|
|
3068
|
+
"tags": [
|
|
3069
|
+
"workflow",
|
|
3070
|
+
"session",
|
|
3071
|
+
"context-switch"
|
|
3072
|
+
],
|
|
3073
|
+
"bundles": [
|
|
3074
|
+
"workflow"
|
|
3075
|
+
]
|
|
3076
|
+
},
|
|
3077
|
+
{
|
|
3078
|
+
"name": "renew",
|
|
3079
|
+
"type": "workflow",
|
|
3080
|
+
"title": "Renew Session",
|
|
3081
|
+
"description": "Resume work on a project or area. Loads context from journal, ~/.whisper/, and beads. Supports claiming work with file conflict detection",
|
|
3082
|
+
"source": "content/prompt-workflow-renew.md",
|
|
3083
|
+
"distilled": "content/distilled/renew/SKILL.md",
|
|
3084
|
+
"skill_format": "single-file",
|
|
3085
|
+
"tags": [
|
|
3086
|
+
"workflow",
|
|
3087
|
+
"session",
|
|
3088
|
+
"context"
|
|
3089
|
+
],
|
|
3090
|
+
"bundles": [
|
|
3091
|
+
"workflow"
|
|
3092
|
+
]
|
|
3093
|
+
},
|
|
3094
|
+
{
|
|
3095
|
+
"name": "next",
|
|
3096
|
+
"type": "workflow",
|
|
3097
|
+
"title": "Next — Rapid Session Snapshot",
|
|
3098
|
+
"description": "Rapid session snapshot to ~/.whisper/ — no full close ceremony. Fast stash for later resumption via /renew",
|
|
3099
|
+
"source": "content/prompt-workflow-next.md",
|
|
3100
|
+
"distilled": "content/distilled/next/SKILL.md",
|
|
3101
|
+
"skill_format": "single-file",
|
|
3102
|
+
"tags": [
|
|
3103
|
+
"workflow",
|
|
3104
|
+
"session",
|
|
3105
|
+
"snapshot"
|
|
3106
|
+
],
|
|
3107
|
+
"bundles": [
|
|
3108
|
+
"workflow"
|
|
3109
|
+
]
|
|
3110
|
+
},
|
|
3024
3111
|
{
|
|
3025
3112
|
"name": "project-status-report",
|
|
3026
3113
|
"type": "task",
|
|
@@ -3127,7 +3214,8 @@
|
|
|
3127
3214
|
"code-review",
|
|
3128
3215
|
"research-codebase",
|
|
3129
3216
|
"create-handoff",
|
|
3130
|
-
"resume-handoff"
|
|
3217
|
+
"resume-handoff",
|
|
3218
|
+
"whisper"
|
|
3131
3219
|
]
|
|
3132
3220
|
},
|
|
3133
3221
|
"planning": {
|
|
@@ -3210,6 +3298,16 @@
|
|
|
3210
3298
|
"doc-link-verifier"
|
|
3211
3299
|
]
|
|
3212
3300
|
},
|
|
3301
|
+
"workflow": {
|
|
3302
|
+
"description": "Session lifecycle and workspace knowledge management",
|
|
3303
|
+
"prompts": [
|
|
3304
|
+
"whisper",
|
|
3305
|
+
"close",
|
|
3306
|
+
"park",
|
|
3307
|
+
"renew",
|
|
3308
|
+
"next"
|
|
3309
|
+
]
|
|
3310
|
+
},
|
|
3213
3311
|
"all": {
|
|
3214
3312
|
"description": "Complete collection of all prompts",
|
|
3215
3313
|
"prompts": [
|
|
@@ -3217,4 +3315,4 @@
|
|
|
3217
3315
|
]
|
|
3218
3316
|
}
|
|
3219
3317
|
}
|
|
3220
|
-
}
|
|
3318
|
+
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "incitaciones",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.3.0",
|
|
4
4
|
"description": "Reusable prompts and skills for CLI LLM tools, with native pi package support.",
|
|
5
5
|
"repository": {
|
|
6
6
|
"type": "git",
|
|
@@ -27,6 +27,7 @@
|
|
|
27
27
|
"content/manifest.json",
|
|
28
28
|
"pi-package/",
|
|
29
29
|
"scripts/cli.mjs",
|
|
30
|
+
"scripts/generate-pi-resources.mjs",
|
|
30
31
|
"LICENSE",
|
|
31
32
|
"README.md"
|
|
32
33
|
],
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: "Shortcut for the close skill. End-of-session wrap-up. Summarizes, logs to daily journal, routes knowledge to ~/.whisper/, commits, and clears context"
|
|
3
|
+
---
|
|
4
|
+
<!-- installed-from: incitaciones -->
|
|
5
|
+
|
|
6
|
+
Use the installed `close` skill for this task.
|
|
7
|
+
|
|
8
|
+
If the skill is not automatically loaded, invoke `/skill:close` and follow it.
|
|
9
|
+
|
|
10
|
+
User context: $@
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: "Shortcut for the next skill. Rapid session snapshot to ~/.whisper/ — no full close ceremony. Fast stash for later resumption via /renew"
|
|
3
|
+
---
|
|
4
|
+
<!-- installed-from: incitaciones -->
|
|
5
|
+
|
|
6
|
+
Use the installed `next` skill for this task.
|
|
7
|
+
|
|
8
|
+
If the skill is not automatically loaded, invoke `/skill:next` and follow it.
|
|
9
|
+
|
|
10
|
+
User context: $@
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: "Shortcut for the park skill. Snapshot current work before switching context. Logs to daily journal, releases ticket claims, records to ~/.whisper/"
|
|
3
|
+
---
|
|
4
|
+
<!-- installed-from: incitaciones -->
|
|
5
|
+
|
|
6
|
+
Use the installed `park` skill for this task.
|
|
7
|
+
|
|
8
|
+
If the skill is not automatically loaded, invoke `/skill:park` and follow it.
|
|
9
|
+
|
|
10
|
+
User context: $@
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: "Shortcut for the renew skill. Resume work on a project or area. Loads context from journal, ~/.whisper/, and beads. Supports claiming work with file conflict detection"
|
|
3
|
+
---
|
|
4
|
+
<!-- installed-from: incitaciones -->
|
|
5
|
+
|
|
6
|
+
Use the installed `renew` skill for this task.
|
|
7
|
+
|
|
8
|
+
If the skill is not automatically loaded, invoke `/skill:renew` and follow it.
|
|
9
|
+
|
|
10
|
+
User context: $@
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: "Shortcut for the whisper skill. Manage the ~/.whisper/ knowledge workspace: init, check, status, link plan, decommission, and knowledge routing"
|
|
3
|
+
---
|
|
4
|
+
<!-- installed-from: incitaciones -->
|
|
5
|
+
|
|
6
|
+
Use the installed `whisper` skill for this task.
|
|
7
|
+
|
|
8
|
+
If the skill is not automatically loaded, invoke `/skill:whisper` and follow it.
|
|
9
|
+
|
|
10
|
+
User context: $@
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: close
|
|
3
|
+
description: "End-of-session wrap-up. Summarizes, logs to daily journal, routes knowledge to ~/.whisper/, commits, and clears context"
|
|
4
|
+
metadata:
|
|
5
|
+
installed-from: "incitaciones"
|
|
6
|
+
---
|
|
7
|
+
---
|
|
8
|
+
name: close
|
|
9
|
+
description: "End-of-session wrap-up. Summarizes what was done, logs it to the daily journal, commits, pushes, and clears context. Trigger when the user says '/close', 'close session', or 'wrap up session'."
|
|
10
|
+
tools: Read, Write, Edit, Glob, Bash
|
|
11
|
+
---
|
|
12
|
+
|
|
13
|
+
# Close Session
|
|
14
|
+
|
|
15
|
+
End the current session: log what was done, update tasks, route durable knowledge to `~/.whisper/`, commit and push, clear context.
|
|
16
|
+
|
|
17
|
+
Uses `$JOURNAL_PATH` (defaults to `~/dev/status`) for the daily log, and `~/.whisper/` for accumulated operational knowledge.
|
|
18
|
+
|
|
19
|
+
## Steps
|
|
20
|
+
|
|
21
|
+
1. Pull the journal repo:
|
|
22
|
+
```bash
|
|
23
|
+
JOURNAL="${JOURNAL_PATH:-$HOME/dev/status}"
|
|
24
|
+
cd "$JOURNAL" && git pull
|
|
25
|
+
```
|
|
26
|
+
|
|
27
|
+
2. Get today's date and time (`date +%Y-%m-%d`, `date +%H:%M`).
|
|
28
|
+
Derive the log path: `$JOURNAL/log/YYYY/YYYY-MM/YYYY-MM-DD.md`
|
|
29
|
+
|
|
30
|
+
3. If the log file does not exist, create it with the daily log template.
|
|
31
|
+
|
|
32
|
+
4. Review the full conversation history and write a concise session summary covering:
|
|
33
|
+
- What was worked on (key topics, files, repos)
|
|
34
|
+
- Decisions made
|
|
35
|
+
- Tasks completed or created
|
|
36
|
+
- Any unresolved items or next steps
|
|
37
|
+
|
|
38
|
+
5. Append the summary to the `## Log` section of today's daily log:
|
|
39
|
+
```
|
|
40
|
+
### Session:HH:MM (<context>)
|
|
41
|
+
- bullet point summary entries
|
|
42
|
+
- **Next:** what to pick up next time (if applicable)
|
|
43
|
+
```
|
|
44
|
+
|
|
45
|
+
6. Update project/area files if tasks were completed or created:
|
|
46
|
+
- Mark completed tasks `[x]`
|
|
47
|
+
- Add new tasks as `[ ]`
|
|
48
|
+
- Add/update `[~]` waiting items
|
|
49
|
+
- Update `## Notes` with decisions
|
|
50
|
+
|
|
51
|
+
7. If any tasks or follow-ups came up that aren't in a project/area, add them to `inbox.md`.
|
|
52
|
+
|
|
53
|
+
8. **Route durable knowledge to `~/.whisper/`.** Scan the session for anything worth keeping and route by scope (skip this step entirely if nothing durable was learned):
|
|
54
|
+
- **Branch-specific finding** → `bd note <beads-epic>` or `~/.whisper/repos/<repo>/branches/<slug>/notes.md`
|
|
55
|
+
- **Repo-wide infra fact** → `~/.whisper/repos/<repo>/env.md`
|
|
56
|
+
- **Universal agent behavior rule** → `bd remember` or `~/.whisper/rules.md`
|
|
57
|
+
- **Worktree setup fact** → `~/.whisper/repos/<repo>/worktrees/<name>/env.md`
|
|
58
|
+
- **No secrets anywhere:** never write tokens, keys, or PII
|
|
59
|
+
- **Extend, don't duplicate:** append to existing notes rather than creating new ones
|
|
60
|
+
|
|
61
|
+
9. Commit and push. Stage only the files this session touched, explicitly by name:
|
|
62
|
+
```bash
|
|
63
|
+
cd "$JOURNAL" && git add <log-file> [<files>] && git commit -m "log: YYYY-MM-DD session notes" && git push
|
|
64
|
+
```
|
|
65
|
+
|
|
66
|
+
10. As the very last step, run `/clear` to reset the conversation context.
|
|
67
|
+
|
|
68
|
+
## Rules
|
|
69
|
+
|
|
70
|
+
- Do NOT ask the user any questions. Summarize automatically from conversation context.
|
|
71
|
+
- Keep the summary concise — bullet points, not paragraphs.
|
|
72
|
+
- If today's log already has content, append to it; never overwrite existing entries.
|
|
73
|
+
- Always pull before reading and push after committing.
|
|
@@ -60,6 +60,16 @@ You are a Technical Project Manager. Translate a plan, spec, or PRD into thin en
|
|
|
60
60
|
- Apply tracker labels such as `needs-triage` when the project uses them.
|
|
61
61
|
- Wire dependencies using actual captured identifiers or explicit body references.
|
|
62
62
|
- Verify each creation step succeeded before continuing.
|
|
63
|
+
- **After each successful creation**, extract the `**Files / Systems:**` bullet list from
|
|
64
|
+
the issue description and store it as structured metadata:
|
|
65
|
+
```bash
|
|
66
|
+
bd update <id> --metadata '{"files": ["path/to/file1.py", "path/to/file2.py"]}'
|
|
67
|
+
```
|
|
68
|
+
This enables automated file-conflict detection by concurrent agents (see `renew` skill
|
|
69
|
+
**Claiming work** section). If the Files/Systems section is empty or contains only
|
|
70
|
+
subsystem names without concrete paths, **stop and ask the user for specific file paths
|
|
71
|
+
before publishing the ticket** — a ticket without concrete paths cannot participate in
|
|
72
|
+
conflict detection and is incomplete.
|
|
63
73
|
|
|
64
74
|
7. **Final report:**
|
|
65
75
|
- Summarize the approved slice set, created issues, labels, and dependency links.
|
|
@@ -15,15 +15,16 @@ Read `references/setup.md` for tracker-specific collection commands before revie
|
|
|
15
15
|
## Procedure
|
|
16
16
|
|
|
17
17
|
1. Gather the issue set to review plus the source plan/spec/parent issue when available.
|
|
18
|
-
2.
|
|
18
|
+
2. For Beads trackers, run PASS 0 pre-flight checks first: `references/pass-0-preflight.md`
|
|
19
|
+
3. Run the content passes in order:
|
|
19
20
|
- Pass 1: `references/pass-1-clarity.md`
|
|
20
21
|
- Pass 2: `references/pass-2-scope.md`
|
|
21
22
|
- Pass 3: `references/pass-3-dependencies.md`
|
|
22
23
|
- Pass 4: `references/pass-4-alignment.md`
|
|
23
24
|
- Pass 5: `references/pass-5-executability.md`
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
25
|
+
4. After each pass starting with pass 2, evaluate convergence using `references/convergence.md`.
|
|
26
|
+
5. If converged, stop.
|
|
27
|
+
6. Produce the final report using `references/final-report.md`.
|
|
27
28
|
|
|
28
29
|
## Review Lens
|
|
29
30
|
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
# PASS 0: Pre-flight (Beads only)
|
|
2
|
+
|
|
3
|
+
Run before all content passes. Mechanical checks that don't require reading issue bodies.
|
|
4
|
+
|
|
5
|
+
**Check 1 — metadata.files coverage:**
|
|
6
|
+
```bash
|
|
7
|
+
bd list --format json | python3 -c "
|
|
8
|
+
import json, sys
|
|
9
|
+
issues = json.load(sys.stdin)
|
|
10
|
+
missing = [i['id'] for i in issues
|
|
11
|
+
if not (i.get('metadata') or {}).get('files')]
|
|
12
|
+
if missing: print('Missing metadata.files:', missing)
|
|
13
|
+
"
|
|
14
|
+
```
|
|
15
|
+
Flag `[PRE-001] MEDIUM` for each ticket missing `metadata.files`.
|
|
16
|
+
Fix: `bd update <id> --set-metadata 'files=["path/to/file.py"]'`
|
|
17
|
+
|
|
18
|
+
**Check 2 — shared-file architecture smell:**
|
|
19
|
+
```bash
|
|
20
|
+
bd list --format json | python3 -c "
|
|
21
|
+
import json, sys
|
|
22
|
+
from collections import defaultdict
|
|
23
|
+
issues = json.load(sys.stdin)
|
|
24
|
+
owners = defaultdict(list)
|
|
25
|
+
for i in issues:
|
|
26
|
+
for f in (i.get('metadata') or {}).get('files', []):
|
|
27
|
+
owners[f].append(i['id'])
|
|
28
|
+
for f, ids in owners.items():
|
|
29
|
+
if len(ids) >= 3: print(f, '->', ids)
|
|
30
|
+
"
|
|
31
|
+
```
|
|
32
|
+
Flag `[PRE-002] LOW` for any file claimed by 3+ open tickets.
|
|
33
|
+
Recommendation: consider a decomposition ticket to split `<file>` before these
|
|
34
|
+
tickets run (see navari-a3cv pattern). If not decomposing now, add a
|
|
35
|
+
co-modification note to all affected tickets.
|
|
36
|
+
|
|
37
|
+
**Prefix:** PRE-001, PRE-002, etc.
|