@stacksjs/defaults 0.72.102 → 0.73.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.
Files changed (164) hide show
  1. package/ai/AGENTS.md +25 -4
  2. package/ai/README.md +26 -4
  3. package/ai/skills/stacks-actions/SKILL.md +1 -1
  4. package/ai/skills/stacks-ai/SKILL.md +1 -1
  5. package/ai/skills/stacks-alias/SKILL.md +1 -1
  6. package/ai/skills/stacks-analytics/SKILL.md +1 -1
  7. package/ai/skills/stacks-api/SKILL.md +1 -1
  8. package/ai/skills/stacks-arrays/SKILL.md +1 -1
  9. package/ai/skills/stacks-auto-imports/SKILL.md +1 -1
  10. package/ai/skills/stacks-browse/SKILL.md +1 -1
  11. package/ai/skills/stacks-browser/SKILL.md +1 -1
  12. package/ai/skills/stacks-buddy/SKILL.md +1 -1
  13. package/ai/skills/stacks-build/SKILL.md +79 -5
  14. package/ai/skills/stacks-cache/SKILL.md +1 -1
  15. package/ai/skills/stacks-calendar/SKILL.md +1 -1
  16. package/ai/skills/stacks-chat/SKILL.md +1 -1
  17. package/ai/skills/stacks-cli/SKILL.md +1 -1
  18. package/ai/skills/stacks-cloud/SKILL.md +1 -1
  19. package/ai/skills/stacks-cms/SKILL.md +1 -1
  20. package/ai/skills/stacks-codebase-design/DEEPENING.md +79 -0
  21. package/ai/skills/stacks-codebase-design/DESIGN-IT-TWICE.md +72 -0
  22. package/ai/skills/stacks-codebase-design/SKILL.md +180 -0
  23. package/ai/skills/stacks-collections/SKILL.md +1 -1
  24. package/ai/skills/stacks-commerce/SKILL.md +141 -35
  25. package/ai/skills/stacks-composables/SKILL.md +1 -1
  26. package/ai/skills/stacks-config/SKILL.md +1 -1
  27. package/ai/skills/stacks-configuration/SKILL.md +1 -1
  28. package/ai/skills/stacks-cron/SKILL.md +1 -1
  29. package/ai/skills/stacks-crosswind/SKILL.md +1 -1
  30. package/ai/skills/stacks-database/SKILL.md +1 -1
  31. package/ai/skills/stacks-datetime/SKILL.md +1 -1
  32. package/ai/skills/stacks-dependencies/SKILL.md +1 -1
  33. package/ai/skills/stacks-deploy/SKILL.md +1 -1
  34. package/ai/skills/stacks-desktop/SKILL.md +1 -1
  35. package/ai/skills/stacks-development/SKILL.md +1 -1
  36. package/ai/skills/stacks-dns/SKILL.md +1 -1
  37. package/ai/skills/stacks-docs/SKILL.md +1 -1
  38. package/ai/skills/stacks-domain-modeling/FORMATS.md +123 -0
  39. package/ai/skills/stacks-domain-modeling/SKILL.md +109 -0
  40. package/ai/skills/stacks-enums/SKILL.md +1 -1
  41. package/ai/skills/stacks-error-handling/SKILL.md +1 -1
  42. package/ai/skills/stacks-events/SKILL.md +1 -1
  43. package/ai/skills/stacks-faker/SKILL.md +1 -1
  44. package/ai/skills/stacks-flow/PHASE-BOUNDARIES.md +91 -0
  45. package/ai/skills/stacks-flow/SKILL.md +117 -0
  46. package/ai/skills/stacks-git/SKILL.md +37 -9
  47. package/ai/skills/stacks-grilling/SKILL.md +85 -0
  48. package/ai/skills/stacks-guard/SKILL.md +86 -11
  49. package/ai/skills/stacks-guard/scripts/block-destructive.sh +67 -0
  50. package/ai/skills/stacks-handoff/SKILL.md +70 -0
  51. package/ai/skills/stacks-health/SKILL.md +1 -1
  52. package/ai/skills/stacks-http/SKILL.md +1 -1
  53. package/ai/skills/stacks-i18n/SKILL.md +1 -1
  54. package/ai/skills/stacks-investigate/SKILL.md +234 -106
  55. package/ai/skills/stacks-investigate/scripts/hitl-loop.template.sh +47 -0
  56. package/ai/skills/stacks-jobs/SKILL.md +1 -1
  57. package/ai/skills/stacks-listeners/SKILL.md +1 -1
  58. package/ai/skills/stacks-logging/SKILL.md +1 -1
  59. package/ai/skills/stacks-mail/SKILL.md +1 -1
  60. package/ai/skills/stacks-middleware/SKILL.md +1 -1
  61. package/ai/skills/stacks-migrations/SKILL.md +1 -1
  62. package/ai/skills/stacks-models/SKILL.md +1 -1
  63. package/ai/skills/stacks-new-feature/SKILL.md +65 -5
  64. package/ai/skills/stacks-notifications/SKILL.md +1 -1
  65. package/ai/skills/stacks-objects/SKILL.md +1 -1
  66. package/ai/skills/stacks-office-hours/SKILL.md +16 -2
  67. package/ai/skills/stacks-orm/SKILL.md +1 -1
  68. package/ai/skills/stacks-path/SKILL.md +1 -1
  69. package/ai/skills/stacks-payments/SKILL.md +35 -1
  70. package/ai/skills/stacks-plan-review/SKILL.md +27 -6
  71. package/ai/skills/stacks-plugins/SKILL.md +1 -1
  72. package/ai/skills/stacks-prototype/LOGIC.md +103 -0
  73. package/ai/skills/stacks-prototype/SKILL.md +66 -0
  74. package/ai/skills/stacks-prototype/UI.md +112 -0
  75. package/ai/skills/stacks-push/SKILL.md +1 -1
  76. package/ai/skills/stacks-query-builder/SKILL.md +1 -1
  77. package/ai/skills/stacks-queue/SKILL.md +1 -1
  78. package/ai/skills/stacks-realtime/SKILL.md +1 -1
  79. package/ai/skills/stacks-registry/SKILL.md +1 -1
  80. package/ai/skills/stacks-repl/SKILL.md +1 -1
  81. package/ai/skills/stacks-retro/SKILL.md +121 -75
  82. package/ai/skills/stacks-review/SKILL.md +182 -74
  83. package/ai/skills/stacks-router/SKILL.md +1 -1
  84. package/ai/skills/stacks-routes/SKILL.md +1 -1
  85. package/ai/skills/stacks-scaffolding/SKILL.md +1 -1
  86. package/ai/skills/stacks-scheduler/SKILL.md +1 -1
  87. package/ai/skills/stacks-search-engine/SKILL.md +1 -1
  88. package/ai/skills/stacks-security/SKILL.md +1 -1
  89. package/ai/skills/stacks-security-audit/SKILL.md +1 -1
  90. package/ai/skills/stacks-server/SKILL.md +1 -1
  91. package/ai/skills/stacks-shell/SKILL.md +1 -1
  92. package/ai/skills/stacks-slug/SKILL.md +1 -1
  93. package/ai/skills/stacks-sms/SKILL.md +1 -1
  94. package/ai/skills/stacks-socials/SKILL.md +1 -1
  95. package/ai/skills/stacks-storage/SKILL.md +1 -1
  96. package/ai/skills/stacks-strings/SKILL.md +1 -1
  97. package/ai/skills/stacks-stx/SKILL.md +1 -1
  98. package/ai/skills/stacks-tdd/EXAMPLES.md +136 -0
  99. package/ai/skills/stacks-tdd/SKILL.md +125 -0
  100. package/ai/skills/stacks-testing/SKILL.md +13 -3
  101. package/ai/skills/stacks-tunnel/SKILL.md +1 -1
  102. package/ai/skills/stacks-types/SKILL.md +1 -1
  103. package/ai/skills/stacks-ui/SKILL.md +1 -1
  104. package/ai/skills/stacks-utils/SKILL.md +1 -1
  105. package/ai/skills/stacks-validation/SKILL.md +1 -1
  106. package/ai/skills/stacks-whois/SKILL.md +1 -1
  107. package/ai/skills/stacks-wizard/SKILL.md +127 -0
  108. package/ai/skills/stacks-wizard/scripts/template.sh +208 -0
  109. package/ai/skills/stacks-writing-for-agents/MECHANICS.md +125 -0
  110. package/ai/skills/stacks-writing-for-agents/SKILL.md +218 -0
  111. package/app/Actions/Auth/GenerateTwoFactorSecretAction.ts +12 -2
  112. package/app/Actions/Commerce/Shipping/{DriverDestroyAction.ts → CourierDestroyAction.ts} +6 -6
  113. package/app/Actions/Commerce/Shipping/{DriverIndexAction.ts → CourierIndexAction.ts} +3 -3
  114. package/app/Actions/Commerce/Shipping/CourierPingStoreAction.ts +61 -0
  115. package/app/Actions/Commerce/Shipping/{DriverShowAction.ts → CourierShowAction.ts} +5 -5
  116. package/app/Actions/Commerce/Shipping/{DriverStoreAction.ts → CourierStoreAction.ts} +4 -4
  117. package/app/Actions/Commerce/Shipping/{DriverUpdateAction.ts → CourierUpdateAction.ts} +6 -6
  118. package/app/Actions/Commerce/Shipping/DeliveryRouteStartAction.ts +38 -0
  119. package/app/Actions/Commerce/Shipping/DeliveryStopCompleteAction.ts +40 -0
  120. package/app/Actions/Commerce/Shipping/DeliveryStopFailAction.ts +44 -0
  121. package/app/Actions/Commerce/Shipping/DeliveryStopStartAction.ts +39 -0
  122. package/app/Actions/Commerce/Shipping/courier-session.ts +75 -0
  123. package/app/Actions/Commerce/commerce-action.test.ts +5 -5
  124. package/app/Actions/Dashboard/Commerce/CommerceDeliveryAction.ts +5 -5
  125. package/app/Actions/Dashboard/Commerce/CourierIndexAction.ts +24 -0
  126. package/app/Actions/Dashboard/Commerce/DeliveryRouteIndexAction.ts +7 -7
  127. package/app/Actions/Dashboard/Commerce/commerce-delivery.test.ts +11 -11
  128. package/app/Actions/Dashboard/Commerce/commerce-delivery.ts +29 -29
  129. package/app/Actions/Dashboard/Commerce/{driver-records.test.ts → courier-records.test.ts} +9 -9
  130. package/app/Actions/Dashboard/Commerce/{driver-records.ts → courier-records.ts} +14 -14
  131. package/app/Actions/Dashboard/Commerce/delivery-route-records.test.ts +13 -13
  132. package/app/Actions/Dashboard/Commerce/delivery-route-records.ts +25 -25
  133. package/app/Models/User.ts +1 -1
  134. package/app/Models/commerce/{Driver.ts → Courier.ts} +7 -7
  135. package/app/Models/commerce/{DriverPing.ts → CourierPing.ts} +7 -7
  136. package/app/Models/commerce/DeliveryRoute.ts +6 -6
  137. package/app/Models/commerce/DeliveryStop.ts +31 -8
  138. package/bootstrap.ts +7 -0
  139. package/functions/commerce/shippings/couriers.ts +19 -0
  140. package/ide/vscode/package.json +1 -1
  141. package/package.json +4 -3
  142. package/resources/components/Dashboard/Commerce/Delivery/{DriverDeleteDialog.stx → CourierDeleteDialog.stx} +5 -5
  143. package/resources/components/Dashboard/Commerce/Delivery/{DriverDialog.stx → CourierDialog.stx} +10 -10
  144. package/resources/components/Dashboard/Commerce/Delivery/{DriversDashboard.stx → CouriersDashboard.stx} +43 -43
  145. package/resources/components/Dashboard/Commerce/Delivery/{DriversTable.stx → CouriersTable.stx} +21 -21
  146. package/resources/components/Dashboard/Commerce/Delivery/DeliveryOverviewDashboard.stx +18 -18
  147. package/resources/components/Dashboard/Commerce/Delivery/DeliveryRouteDeleteDialog.stx +2 -2
  148. package/resources/components/Dashboard/Commerce/Delivery/DeliveryRouteDialog.stx +22 -22
  149. package/resources/components/Dashboard/Commerce/Delivery/DeliveryRoutesDashboard.stx +24 -24
  150. package/resources/components/Dashboard/Commerce/Delivery/DeliveryRoutesTable.stx +8 -8
  151. package/resources/components/Dashboard/Commerce/Delivery/TabNavigation.stx +1 -1
  152. package/resources/functions/dashboard/data.ts +1 -1
  153. package/resources/functions/dashboard/sidebar.ts +2 -2
  154. package/routes/dashboard-api.ts +6 -6
  155. package/routes/dashboard.ts +7 -7
  156. package/routes/delivery.ts +24 -0
  157. package/types/defaults.ts +3 -3
  158. package/views/dashboard/.discovered-models.json +18 -18
  159. package/views/dashboard/AUDIT.md +1 -1
  160. package/views/dashboard/commerce/delivery/{drivers.stx → couriers.stx} +2 -2
  161. package/views/dashboard/composables/useChart.ts +16 -2
  162. package/views/dashboard/layouts/default.stx +1 -1
  163. package/app/Actions/Dashboard/Commerce/DriverIndexAction.ts +0 -24
  164. package/functions/commerce/shippings/drivers.ts +0 -19
@@ -1,18 +1,18 @@
1
1
  ---
2
2
  name: stacks-guard
3
- description: Use for safety rails — warns on destructive commands (rm -rf, DROP TABLE, force-push, git reset --hard) and provides freeze mode for focused debugging. Invoke with /stacks-guard.
3
+ description: Use for safety rails in a Stacks project - detecting destructive commands (rm -rf, DROP TABLE, force-push, git reset --hard, migrate:fresh against production), installing a PreToolUse hook that blocks them before they run, freeze mode for focused debugging, and a pre-commit safety scan. Invoke with /stacks-guard.
4
4
  license: MIT
5
5
  compatibility: Bun >= 1.3.0, TypeScript
6
6
  allowed-tools: Read Edit Write Bash Grep Glob
7
7
  ---
8
8
 
9
- # /stacks-guard — Safety Rails
9
+ # /stacks-guard - Safety Rails
10
10
 
11
11
  Prevent destructive actions and enforce focus during debugging sessions.
12
12
 
13
13
  ## Destructive Command Detection
14
14
 
15
- ### 🔴 CRITICAL — Block and require confirmation
15
+ ### 🔴 CRITICAL - Block and require confirmation
16
16
 
17
17
  | Pattern | Risk |
18
18
  |---------|------|
@@ -32,7 +32,7 @@ Risk: [what will be destroyed]
32
32
  Reversible: [yes/no]
33
33
  ```
34
34
 
35
- ### 🟡 WARNING — Warn but allow
35
+ ### 🟡 WARNING - Warn but allow
36
36
 
37
37
  | Pattern | Risk |
38
38
  |---------|------|
@@ -44,11 +44,11 @@ Reversible: [yes/no]
44
44
  | Modifying `config/services.ts` | Contains API keys |
45
45
  | Modifying `storage/framework/core/*/src/index.ts` | Public package API |
46
46
 
47
- ### 🟢 INFORMATIONAL — Note but don't block
47
+ ### 🟢 INFORMATIONAL - Note but don't block
48
48
 
49
49
  | Pattern | Note |
50
50
  |---------|------|
51
- | `git rebase` | History rewrite — ensure not shared |
51
+ | `git rebase` | History rewrite - ensure not shared |
52
52
  | `bun update` (major versions) | May introduce breaking changes |
53
53
  | Modifying CI/CD config | Affects deployment pipeline |
54
54
  | Changing auth/permissions code | Security-sensitive |
@@ -85,14 +85,89 @@ Before commits, scan for:
85
85
 
86
86
  ## Stacks-Specific Guards
87
87
 
88
- - **Don't edit `storage/framework/types/*.d.ts`** — these are auto-generated
88
+ - **Don't edit `storage/framework/types/*.d.ts`** - these are auto-generated
89
89
  - **Don't edit `storage/framework/defaults/app/Models/`** without also generating migrations
90
- - **Don't modify `config/services.ts` in commits** — contains API keys
91
- - **Check `storage/framework/core/*/package.json` versions** — workspace packages should stay in sync
90
+ - **Don't modify `config/services.ts` in commits** - contains API keys
91
+ - **Check `storage/framework/core/*/package.json` versions** - workspace packages should stay in sync
92
+
93
+ ## Make it enforcing
94
+
95
+ Everything above is advisory: it works only while the agent is paying attention.
96
+ A **PreToolUse hook** turns it into enforcement, because the harness runs it on
97
+ every Bash call before the command executes.
98
+
99
+ [scripts/block-destructive.sh](scripts/block-destructive.sh) is the hook. It
100
+ reads the tool call on stdin, exits 2 with a message on stderr when the command
101
+ matches a blocked pattern, and exits 0 otherwise. It blocks two lists: commands
102
+ that are unrecoverable anywhere (`rm -rf /` or `~` or `.`, force-push,
103
+ `reset --hard`, `clean -f`, `branch -D`, `DROP TABLE`, `TRUNCATE TABLE`), and
104
+ commands that are routine locally but destructive against production
105
+ (`migrate:fresh`, `seed --fresh`, `cloud:remove`, `cloud:cleanup`, gated on the
106
+ command naming a production env).
107
+
108
+ Deliberately not blocked: a plain `git push`, `rm -rf node_modules`,
109
+ `buddy migrate:fresh` locally. A guard that fires on regenerable things gets
110
+ turned off, and a guard that is off protects nothing.
111
+
112
+ Credit: adapted from Matt Pocock's `git-guardrails-claude-code` skill (MIT),
113
+ <https://github.com/mattpocock/skills>.
114
+
115
+ ### Install
116
+
117
+ 1. **Ask the scope.** This project (`.claude/settings.json`) or every project
118
+ (`~/.claude/settings.json`)?
119
+ 2. **Copy the script** to `.claude/hooks/block-destructive.sh` or
120
+ `~/.claude/hooks/block-destructive.sh`, and `chmod +x` it.
121
+ 3. **Register it.** Merge into the existing `hooks.PreToolUse` array rather than
122
+ overwriting the file:
123
+
124
+ ```json
125
+ {
126
+ "hooks": {
127
+ "PreToolUse": [
128
+ {
129
+ "matcher": "Bash",
130
+ "hooks": [
131
+ {
132
+ "type": "command",
133
+ "command": "\"$CLAUDE_PROJECT_DIR\"/.claude/hooks/block-destructive.sh"
134
+ }
135
+ ]
136
+ }
137
+ ]
138
+ }
139
+ }
140
+ ```
141
+
142
+ For the global install, the command is `~/.claude/hooks/block-destructive.sh`.
143
+ 4. **Tune the lists.** Ask the user what to add or remove. A repo that never
144
+ deploys does not need the production list. A repo with a protected `main` may
145
+ want a plain `git push` blocked too.
146
+ 5. **Verify.** Each of these should print a BLOCKED line and exit 2:
147
+
148
+ ```bash
149
+ echo '{"tool_input":{"command":"git push --force origin main"}}' | .claude/hooks/block-destructive.sh
150
+ ```
151
+
152
+ And each of these should exit 0 silently:
153
+
154
+ ```bash
155
+ echo '{"tool_input":{"command":"rm -rf node_modules"}}' | .claude/hooks/block-destructive.sh
156
+ ```
157
+
158
+ `.claude/` is gitignored in a Stacks project, so a project-scope install is
159
+ per-developer. To make it a team rule, commit the script under `scripts/` and
160
+ have `buddy setup:ai` users point their hook at that path.
92
161
 
93
162
  ## Rules
94
163
 
95
164
  - **Never silently allow destructive commands.**
96
- - **Don't be annoying.** `rm file.txt` doesn't need a warning. `rm -rf node_modules` is fine — it's regenerable.
165
+ - **Don't be annoying.** `rm file.txt` doesn't need a warning. `rm -rf node_modules` is fine - it's regenerable.
97
166
  - **Respect user intent.** After warning once, if confirmed, proceed.
98
- - **Context matters.** Force-push to personal branch ≠ force-push to main.
167
+ - **Context matters.** Force-push to a personal branch is not force-push to main.
168
+
169
+ ## Downstream
170
+
171
+ > Guard installed? `/stacks-retro` is where a near-miss becomes a permanent
172
+ > check, and `/stacks-wizard` is for the production steps a human should be
173
+ > doing by hand anyway.
@@ -0,0 +1,67 @@
1
+ #!/usr/bin/env bash
2
+ #
3
+ # Claude Code PreToolUse hook: block destructive commands before they run.
4
+ #
5
+ # Reads the tool call on stdin, exits 2 with a message on stderr when the
6
+ # command matches a blocked pattern, and exits 0 otherwise.
7
+ #
8
+ # Adapted from Matt Pocock's `git-guardrails-claude-code` skill (MIT),
9
+ # https://github.com/mattpocock/skills
10
+ #
11
+ # Install: see the stacks-guard skill. Customise the two pattern lists below;
12
+ # they are a starting point, not a policy.
13
+
14
+ set -uo pipefail
15
+
16
+ INPUT=$(cat)
17
+
18
+ if command -v jq >/dev/null 2>&1; then
19
+ COMMAND=$(printf '%s' "$INPUT" | jq -r '.tool_input.command // empty')
20
+ else
21
+ # No jq: fall back to the raw payload. Coarser, but it still matches.
22
+ COMMAND="$INPUT"
23
+ fi
24
+
25
+ [[ -z "$COMMAND" ]] && exit 0
26
+
27
+ # Unrecoverable. These destroy work or data that no command brings back.
28
+ BLOCKED=(
29
+ 'rm[[:space:]]+-[a-zA-Z]*[rR][a-zA-Z]*f?[[:space:]]+(/|~|\.)([[:space:]]|$)'
30
+ 'git[[:space:]]+push[[:space:]].*--force'
31
+ 'git[[:space:]]+push[[:space:]].*-f([[:space:]]|$)'
32
+ 'git[[:space:]]+reset[[:space:]]+--hard'
33
+ 'git[[:space:]]+clean[[:space:]]+-[a-zA-Z]*f'
34
+ 'git[[:space:]]+branch[[:space:]]+-D'
35
+ 'git[[:space:]]+checkout[[:space:]]+--[[:space:]]+\.'
36
+ 'git[[:space:]]+restore[[:space:]]+\.'
37
+ 'DROP[[:space:]]+(TABLE|DATABASE|SCHEMA)'
38
+ 'TRUNCATE[[:space:]]+TABLE'
39
+ )
40
+
41
+ # Destructive only against production. Same commands are routine locally.
42
+ PROD_BLOCKED=(
43
+ '(buddy|bud|stacks)[[:space:]]+migrate:fresh'
44
+ '(buddy|bud|stacks)[[:space:]]+seed[[:space:]].*--fresh'
45
+ '(buddy|bud|stacks)[[:space:]]+cloud:remove'
46
+ '(buddy|bud|stacks)[[:space:]]+cloud:cleanup'
47
+ )
48
+
49
+ for pattern in "${BLOCKED[@]}"; do
50
+ if printf '%s' "$COMMAND" | grep -qE "$pattern"; then
51
+ printf 'BLOCKED: this command matches the destructive pattern /%s/ and the user has not authorised it. Ask them to run it themselves, or propose a reversible alternative.\n' "$pattern" >&2
52
+ exit 2
53
+ fi
54
+ done
55
+
56
+ # A command is production-facing when it says so, or when it is reading a
57
+ # production env file.
58
+ if printf '%s' "$COMMAND" | grep -qE '(APP_ENV=production|NODE_ENV=production|--env[= ]production|\.env\.production)'; then
59
+ for pattern in "${PROD_BLOCKED[@]}"; do
60
+ if printf '%s' "$COMMAND" | grep -qE "$pattern"; then
61
+ printf 'BLOCKED: this command matches /%s/ against production. It drops or removes live infrastructure. Ask the user to run it themselves.\n' "$pattern" >&2
62
+ exit 2
63
+ fi
64
+ done
65
+ fi
66
+
67
+ exit 0
@@ -0,0 +1,70 @@
1
+ ---
2
+ name: stacks-handoff
3
+ description: Compact the current conversation into a portable handoff document for another agent or session to pick up.
4
+ disable-model-invocation: true
5
+ argument-hint: "What will the next session be used for?"
6
+ license: MIT
7
+ compatibility: Bun >= 1.3.0, TypeScript
8
+ allowed-tools: Read Edit Write Bash Grep Glob
9
+ ---
10
+
11
+ # Handoff
12
+
13
+ Write a handoff document summarising the current conversation so a fresh agent
14
+ can continue the work. Save it to the OS temp directory, not the workspace: a
15
+ handoff is scaffolding for one hop, and a stray `HANDOFF.md` in the repo is
16
+ sediment.
17
+
18
+ If the user passed an argument, treat it as a description of what the next
19
+ session will focus on and tailor the document to that.
20
+
21
+ Credit: adapted from Matt Pocock's `handoff` skill (MIT),
22
+ <https://github.com/mattpocock/skills>.
23
+
24
+ ## What goes in
25
+
26
+ - **The goal**, in one paragraph. What the next session is trying to achieve.
27
+ - **Where things stand.** What is done, what is in flight, what is untouched.
28
+ - **The decisions already made, and why.** This is the part a summary of the
29
+ diff cannot recover, so it is the part worth the most words.
30
+ - **What is known to be broken or unverified.** Name the command that would
31
+ prove it either way.
32
+ - **Suggested skills.** Name which `stacks-*` skills the next agent should call
33
+ the Skill tool for. A handoff that does not point at `stacks-orm` before a
34
+ model change is handing over a landmine.
35
+ - **Open questions** the next session has to resolve, or take back to the user.
36
+
37
+ ## What stays out
38
+
39
+ Do not duplicate content already captured elsewhere. Reference it by path,
40
+ branch, URL or commit instead:
41
+
42
+ - Committed code and its diff.
43
+ - A spec, plan or ADR already written to disk.
44
+ - An issue or PR on the tracker.
45
+ - Anything a `stacks-*` skill already documents. Point at the skill.
46
+
47
+ ## Redact before you write
48
+
49
+ The document leaves this session, so treat it as publishable. Write
50
+ `<REDACTED>` in place of:
51
+
52
+ - Anything from `.env`, `.env.production` or `config/services.ts`.
53
+ - `APP_KEY`, AWS keys, `HCLOUD_TOKEN`, registrar and DNS API tokens, database
54
+ URLs with credentials in them.
55
+ - Personal data pulled out of a database during the session.
56
+
57
+ Reference the variable name and where it lives, never the value.
58
+
59
+ ## Finish
60
+
61
+ Tell the user the absolute path, and say in one line what the next session
62
+ should do first.
63
+
64
+ ## Before you hand off at all
65
+
66
+ A handoff is narrow. It buys **portability**, and you only need it when
67
+ something is actually travelling: a different agent, a different directory or
68
+ repo, a colleague, or a side task forked mid-phase. If none of those apply, the
69
+ cheaper moves are to continue, to clear, or to compact. `stacks-flow` has the
70
+ ordered tree.
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: stacks-health
3
- description: Use when implementing health checks in a Stacks application — service monitoring, health endpoints, or diagnostic checks. Covers @stacksjs/health (currently WIP — Oh Dear integration planned).
3
+ description: Use when implementing health checks in a Stacks application - service monitoring, health endpoints, or diagnostic checks. Covers @stacksjs/health (currently WIP - Oh Dear integration planned).
4
4
  license: MIT
5
5
  compatibility: Bun >= 1.3.0, TypeScript
6
6
  allowed-tools: Read Edit Write Bash Grep Glob
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: stacks-http
3
- description: Use when working with HTTP utilities in a Stacks application — HTTP status codes, making outbound HTTP requests via HttxClient, reactive fetch composables (useFetch/createFetch), or HTTP-related helpers. Covers @stacksjs/http, @stacksjs/httx, and the fetch composables in @stacksjs/composables.
3
+ description: Use when working with HTTP utilities in a Stacks application - HTTP status codes, making outbound HTTP requests via HttxClient, reactive fetch composables (useFetch/createFetch), or HTTP-related helpers. Covers @stacksjs/http, @stacksjs/httx, and the fetch composables in @stacksjs/composables.
4
4
  license: MIT
5
5
  compatibility: Bun >= 1.3.0, TypeScript
6
6
  allowed-tools: Read Edit Write Bash Grep Glob
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: stacks-i18n
3
- description: Use when working with internationalization in a Stacks application — translations, locale management, pluralization, date/number/currency formatting, or loading translation files. Covers @stacksjs/i18n with translator, formatter, loader, and pluralization modules.
3
+ description: Use when working with internationalization in a Stacks application - translations, locale management, pluralization, date/number/currency formatting, or loading translation files. Covers @stacksjs/i18n with translator, formatter, loader, and pluralization modules.
4
4
  license: MIT
5
5
  compatibility: Bun >= 1.3.0, TypeScript
6
6
  allowed-tools: Read Edit Write Bash Grep Glob