diff --git a/.agents/skills/gstack-browse/SKILL.md b/.agents/skills/gstack-browse/SKILL.md index 08fe9f1f..6f634f12 100644 --- a/.agents/skills/gstack-browse/SKILL.md +++ b/.agents/skills/gstack-browse/SKILL.md @@ -58,16 +58,28 @@ Only run `open` if the user says yes. Always run `touch` to mark as seen. This o If `TEL_PROMPTED` is `no` AND `LAKE_INTRO` is `yes`: After the lake intro is handled, ask the user about telemetry. Use AskUserQuestion: -> gstack can share anonymous usage data (which skills you use, how long they take, crash info) -> to help improve the project. No code, file paths, or repo names are ever sent. +> Help gstack get better! Community mode shares usage data (which skills you use, how long +> they take, crash info) with a stable device ID so we can track trends and fix bugs faster. +> No code, file paths, or repo names are ever sent. > Change anytime with `gstack-config set telemetry off`. Options: -- A) Yes, share anonymous data (recommended) +- A) Help gstack get better! (recommended) - B) No thanks -If A: run `~/.codex/skills/gstack/bin/gstack-config set telemetry anonymous` -If B: run `~/.codex/skills/gstack/bin/gstack-config set telemetry off` +If A: run `~/.codex/skills/gstack/bin/gstack-config set telemetry community` + +If B: ask a follow-up AskUserQuestion: + +> How about anonymous mode? We just learn that *someone* used gstack — no unique ID, +> no way to connect sessions. Just a counter that helps us know if anyone's out there. + +Options: +- A) Sure, anonymous is fine +- B) No thanks, fully off + +If B→A: run `~/.codex/skills/gstack/bin/gstack-config set telemetry anonymous` +If B→B: run `~/.codex/skills/gstack/bin/gstack-config set telemetry off` Always run: ```bash @@ -180,7 +192,14 @@ RECOMMENDATION: [what the user should do next] After the skill workflow completes (success, error, or abort), log the telemetry event. Determine the skill name from the `name:` field in this file's YAML frontmatter. Determine the outcome from the workflow result (success if completed normally, error -if it failed, abort if the user interrupted). Run this bash: +if it failed, abort if the user interrupted). + +**PLAN MODE EXCEPTION — ALWAYS RUN:** This command writes telemetry to +`~/.gstack/analytics/` (user config directory, not project files). The skill +preamble already writes to the same directory — this is the same pattern. +Skipping this command loses session duration and outcome data. + +Run this bash: ```bash _TEL_END=$(date +%s) diff --git a/.agents/skills/gstack-design-consultation/SKILL.md b/.agents/skills/gstack-design-consultation/SKILL.md index cd81ab4e..8d018781 100644 --- a/.agents/skills/gstack-design-consultation/SKILL.md +++ b/.agents/skills/gstack-design-consultation/SKILL.md @@ -59,16 +59,28 @@ Only run `open` if the user says yes. Always run `touch` to mark as seen. This o If `TEL_PROMPTED` is `no` AND `LAKE_INTRO` is `yes`: After the lake intro is handled, ask the user about telemetry. Use AskUserQuestion: -> gstack can share anonymous usage data (which skills you use, how long they take, crash info) -> to help improve the project. No code, file paths, or repo names are ever sent. +> Help gstack get better! Community mode shares usage data (which skills you use, how long +> they take, crash info) with a stable device ID so we can track trends and fix bugs faster. +> No code, file paths, or repo names are ever sent. > Change anytime with `gstack-config set telemetry off`. Options: -- A) Yes, share anonymous data (recommended) +- A) Help gstack get better! (recommended) - B) No thanks -If A: run `~/.codex/skills/gstack/bin/gstack-config set telemetry anonymous` -If B: run `~/.codex/skills/gstack/bin/gstack-config set telemetry off` +If A: run `~/.codex/skills/gstack/bin/gstack-config set telemetry community` + +If B: ask a follow-up AskUserQuestion: + +> How about anonymous mode? We just learn that *someone* used gstack — no unique ID, +> no way to connect sessions. Just a counter that helps us know if anyone's out there. + +Options: +- A) Sure, anonymous is fine +- B) No thanks, fully off + +If B→A: run `~/.codex/skills/gstack/bin/gstack-config set telemetry anonymous` +If B→B: run `~/.codex/skills/gstack/bin/gstack-config set telemetry off` Always run: ```bash @@ -181,7 +193,14 @@ RECOMMENDATION: [what the user should do next] After the skill workflow completes (success, error, or abort), log the telemetry event. Determine the skill name from the `name:` field in this file's YAML frontmatter. Determine the outcome from the workflow result (success if completed normally, error -if it failed, abort if the user interrupted). Run this bash: +if it failed, abort if the user interrupted). + +**PLAN MODE EXCEPTION — ALWAYS RUN:** This command writes telemetry to +`~/.gstack/analytics/` (user config directory, not project files). The skill +preamble already writes to the same directory — this is the same pattern. +Skipping this command loses session duration and outcome data. + +Run this bash: ```bash _TEL_END=$(date +%s) diff --git a/.agents/skills/gstack-design-review/SKILL.md b/.agents/skills/gstack-design-review/SKILL.md index fa7100db..2a7d26b2 100644 --- a/.agents/skills/gstack-design-review/SKILL.md +++ b/.agents/skills/gstack-design-review/SKILL.md @@ -59,16 +59,28 @@ Only run `open` if the user says yes. Always run `touch` to mark as seen. This o If `TEL_PROMPTED` is `no` AND `LAKE_INTRO` is `yes`: After the lake intro is handled, ask the user about telemetry. Use AskUserQuestion: -> gstack can share anonymous usage data (which skills you use, how long they take, crash info) -> to help improve the project. No code, file paths, or repo names are ever sent. +> Help gstack get better! Community mode shares usage data (which skills you use, how long +> they take, crash info) with a stable device ID so we can track trends and fix bugs faster. +> No code, file paths, or repo names are ever sent. > Change anytime with `gstack-config set telemetry off`. Options: -- A) Yes, share anonymous data (recommended) +- A) Help gstack get better! (recommended) - B) No thanks -If A: run `~/.codex/skills/gstack/bin/gstack-config set telemetry anonymous` -If B: run `~/.codex/skills/gstack/bin/gstack-config set telemetry off` +If A: run `~/.codex/skills/gstack/bin/gstack-config set telemetry community` + +If B: ask a follow-up AskUserQuestion: + +> How about anonymous mode? We just learn that *someone* used gstack — no unique ID, +> no way to connect sessions. Just a counter that helps us know if anyone's out there. + +Options: +- A) Sure, anonymous is fine +- B) No thanks, fully off + +If B→A: run `~/.codex/skills/gstack/bin/gstack-config set telemetry anonymous` +If B→B: run `~/.codex/skills/gstack/bin/gstack-config set telemetry off` Always run: ```bash @@ -181,7 +193,14 @@ RECOMMENDATION: [what the user should do next] After the skill workflow completes (success, error, or abort), log the telemetry event. Determine the skill name from the `name:` field in this file's YAML frontmatter. Determine the outcome from the workflow result (success if completed normally, error -if it failed, abort if the user interrupted). Run this bash: +if it failed, abort if the user interrupted). + +**PLAN MODE EXCEPTION — ALWAYS RUN:** This command writes telemetry to +`~/.gstack/analytics/` (user config directory, not project files). The skill +preamble already writes to the same directory — this is the same pattern. +Skipping this command loses session duration and outcome data. + +Run this bash: ```bash _TEL_END=$(date +%s) diff --git a/.agents/skills/gstack-document-release/SKILL.md b/.agents/skills/gstack-document-release/SKILL.md index c28b034e..9249b0be 100644 --- a/.agents/skills/gstack-document-release/SKILL.md +++ b/.agents/skills/gstack-document-release/SKILL.md @@ -57,16 +57,28 @@ Only run `open` if the user says yes. Always run `touch` to mark as seen. This o If `TEL_PROMPTED` is `no` AND `LAKE_INTRO` is `yes`: After the lake intro is handled, ask the user about telemetry. Use AskUserQuestion: -> gstack can share anonymous usage data (which skills you use, how long they take, crash info) -> to help improve the project. No code, file paths, or repo names are ever sent. +> Help gstack get better! Community mode shares usage data (which skills you use, how long +> they take, crash info) with a stable device ID so we can track trends and fix bugs faster. +> No code, file paths, or repo names are ever sent. > Change anytime with `gstack-config set telemetry off`. Options: -- A) Yes, share anonymous data (recommended) +- A) Help gstack get better! (recommended) - B) No thanks -If A: run `~/.codex/skills/gstack/bin/gstack-config set telemetry anonymous` -If B: run `~/.codex/skills/gstack/bin/gstack-config set telemetry off` +If A: run `~/.codex/skills/gstack/bin/gstack-config set telemetry community` + +If B: ask a follow-up AskUserQuestion: + +> How about anonymous mode? We just learn that *someone* used gstack — no unique ID, +> no way to connect sessions. Just a counter that helps us know if anyone's out there. + +Options: +- A) Sure, anonymous is fine +- B) No thanks, fully off + +If B→A: run `~/.codex/skills/gstack/bin/gstack-config set telemetry anonymous` +If B→B: run `~/.codex/skills/gstack/bin/gstack-config set telemetry off` Always run: ```bash @@ -179,7 +191,14 @@ RECOMMENDATION: [what the user should do next] After the skill workflow completes (success, error, or abort), log the telemetry event. Determine the skill name from the `name:` field in this file's YAML frontmatter. Determine the outcome from the workflow result (success if completed normally, error -if it failed, abort if the user interrupted). Run this bash: +if it failed, abort if the user interrupted). + +**PLAN MODE EXCEPTION — ALWAYS RUN:** This command writes telemetry to +`~/.gstack/analytics/` (user config directory, not project files). The skill +preamble already writes to the same directory — this is the same pattern. +Skipping this command loses session duration and outcome data. + +Run this bash: ```bash _TEL_END=$(date +%s) diff --git a/.agents/skills/gstack-investigate/SKILL.md b/.agents/skills/gstack-investigate/SKILL.md index ed8a3425..39f5910e 100644 --- a/.agents/skills/gstack-investigate/SKILL.md +++ b/.agents/skills/gstack-investigate/SKILL.md @@ -60,16 +60,28 @@ Only run `open` if the user says yes. Always run `touch` to mark as seen. This o If `TEL_PROMPTED` is `no` AND `LAKE_INTRO` is `yes`: After the lake intro is handled, ask the user about telemetry. Use AskUserQuestion: -> gstack can share anonymous usage data (which skills you use, how long they take, crash info) -> to help improve the project. No code, file paths, or repo names are ever sent. +> Help gstack get better! Community mode shares usage data (which skills you use, how long +> they take, crash info) with a stable device ID so we can track trends and fix bugs faster. +> No code, file paths, or repo names are ever sent. > Change anytime with `gstack-config set telemetry off`. Options: -- A) Yes, share anonymous data (recommended) +- A) Help gstack get better! (recommended) - B) No thanks -If A: run `~/.codex/skills/gstack/bin/gstack-config set telemetry anonymous` -If B: run `~/.codex/skills/gstack/bin/gstack-config set telemetry off` +If A: run `~/.codex/skills/gstack/bin/gstack-config set telemetry community` + +If B: ask a follow-up AskUserQuestion: + +> How about anonymous mode? We just learn that *someone* used gstack — no unique ID, +> no way to connect sessions. Just a counter that helps us know if anyone's out there. + +Options: +- A) Sure, anonymous is fine +- B) No thanks, fully off + +If B→A: run `~/.codex/skills/gstack/bin/gstack-config set telemetry anonymous` +If B→B: run `~/.codex/skills/gstack/bin/gstack-config set telemetry off` Always run: ```bash @@ -182,7 +194,14 @@ RECOMMENDATION: [what the user should do next] After the skill workflow completes (success, error, or abort), log the telemetry event. Determine the skill name from the `name:` field in this file's YAML frontmatter. Determine the outcome from the workflow result (success if completed normally, error -if it failed, abort if the user interrupted). Run this bash: +if it failed, abort if the user interrupted). + +**PLAN MODE EXCEPTION — ALWAYS RUN:** This command writes telemetry to +`~/.gstack/analytics/` (user config directory, not project files). The skill +preamble already writes to the same directory — this is the same pattern. +Skipping this command loses session duration and outcome data. + +Run this bash: ```bash _TEL_END=$(date +%s) diff --git a/.agents/skills/gstack-office-hours/SKILL.md b/.agents/skills/gstack-office-hours/SKILL.md index 78ae5670..c843d908 100644 --- a/.agents/skills/gstack-office-hours/SKILL.md +++ b/.agents/skills/gstack-office-hours/SKILL.md @@ -61,16 +61,28 @@ Only run `open` if the user says yes. Always run `touch` to mark as seen. This o If `TEL_PROMPTED` is `no` AND `LAKE_INTRO` is `yes`: After the lake intro is handled, ask the user about telemetry. Use AskUserQuestion: -> gstack can share anonymous usage data (which skills you use, how long they take, crash info) -> to help improve the project. No code, file paths, or repo names are ever sent. +> Help gstack get better! Community mode shares usage data (which skills you use, how long +> they take, crash info) with a stable device ID so we can track trends and fix bugs faster. +> No code, file paths, or repo names are ever sent. > Change anytime with `gstack-config set telemetry off`. Options: -- A) Yes, share anonymous data (recommended) +- A) Help gstack get better! (recommended) - B) No thanks -If A: run `~/.codex/skills/gstack/bin/gstack-config set telemetry anonymous` -If B: run `~/.codex/skills/gstack/bin/gstack-config set telemetry off` +If A: run `~/.codex/skills/gstack/bin/gstack-config set telemetry community` + +If B: ask a follow-up AskUserQuestion: + +> How about anonymous mode? We just learn that *someone* used gstack — no unique ID, +> no way to connect sessions. Just a counter that helps us know if anyone's out there. + +Options: +- A) Sure, anonymous is fine +- B) No thanks, fully off + +If B→A: run `~/.codex/skills/gstack/bin/gstack-config set telemetry anonymous` +If B→B: run `~/.codex/skills/gstack/bin/gstack-config set telemetry off` Always run: ```bash @@ -183,7 +195,14 @@ RECOMMENDATION: [what the user should do next] After the skill workflow completes (success, error, or abort), log the telemetry event. Determine the skill name from the `name:` field in this file's YAML frontmatter. Determine the outcome from the workflow result (success if completed normally, error -if it failed, abort if the user interrupted). Run this bash: +if it failed, abort if the user interrupted). + +**PLAN MODE EXCEPTION — ALWAYS RUN:** This command writes telemetry to +`~/.gstack/analytics/` (user config directory, not project files). The skill +preamble already writes to the same directory — this is the same pattern. +Skipping this command loses session duration and outcome data. + +Run this bash: ```bash _TEL_END=$(date +%s) diff --git a/.agents/skills/gstack-plan-ceo-review/SKILL.md b/.agents/skills/gstack-plan-ceo-review/SKILL.md index 6cc2472b..dfb1c937 100644 --- a/.agents/skills/gstack-plan-ceo-review/SKILL.md +++ b/.agents/skills/gstack-plan-ceo-review/SKILL.md @@ -60,16 +60,28 @@ Only run `open` if the user says yes. Always run `touch` to mark as seen. This o If `TEL_PROMPTED` is `no` AND `LAKE_INTRO` is `yes`: After the lake intro is handled, ask the user about telemetry. Use AskUserQuestion: -> gstack can share anonymous usage data (which skills you use, how long they take, crash info) -> to help improve the project. No code, file paths, or repo names are ever sent. +> Help gstack get better! Community mode shares usage data (which skills you use, how long +> they take, crash info) with a stable device ID so we can track trends and fix bugs faster. +> No code, file paths, or repo names are ever sent. > Change anytime with `gstack-config set telemetry off`. Options: -- A) Yes, share anonymous data (recommended) +- A) Help gstack get better! (recommended) - B) No thanks -If A: run `~/.codex/skills/gstack/bin/gstack-config set telemetry anonymous` -If B: run `~/.codex/skills/gstack/bin/gstack-config set telemetry off` +If A: run `~/.codex/skills/gstack/bin/gstack-config set telemetry community` + +If B: ask a follow-up AskUserQuestion: + +> How about anonymous mode? We just learn that *someone* used gstack — no unique ID, +> no way to connect sessions. Just a counter that helps us know if anyone's out there. + +Options: +- A) Sure, anonymous is fine +- B) No thanks, fully off + +If B→A: run `~/.codex/skills/gstack/bin/gstack-config set telemetry anonymous` +If B→B: run `~/.codex/skills/gstack/bin/gstack-config set telemetry off` Always run: ```bash @@ -182,7 +194,14 @@ RECOMMENDATION: [what the user should do next] After the skill workflow completes (success, error, or abort), log the telemetry event. Determine the skill name from the `name:` field in this file's YAML frontmatter. Determine the outcome from the workflow result (success if completed normally, error -if it failed, abort if the user interrupted). Run this bash: +if it failed, abort if the user interrupted). + +**PLAN MODE EXCEPTION — ALWAYS RUN:** This command writes telemetry to +`~/.gstack/analytics/` (user config directory, not project files). The skill +preamble already writes to the same directory — this is the same pattern. +Skipping this command loses session duration and outcome data. + +Run this bash: ```bash _TEL_END=$(date +%s) @@ -830,7 +849,13 @@ If any AskUserQuestion goes unanswered, note it here. Never silently default. ## Review Log -After producing the Completion Summary above, persist the review result: +After producing the Completion Summary above, persist the review result. + +**PLAN MODE EXCEPTION — ALWAYS RUN:** This command writes review metadata to +`~/.gstack/` (user config directory, not project files). The skill preamble +already writes to `~/.gstack/sessions/` and `~/.gstack/analytics/` — this is +the same pattern. The review dashboard depends on this data. Skipping this +command breaks the review readiness dashboard in /ship. ```bash ~/.codex/skills/gstack/bin/gstack-review-log '{"skill":"plan-ceo-review","timestamp":"TIMESTAMP","status":"STATUS","unresolved":N,"critical_gaps":N,"mode":"MODE","commit":"COMMIT"}' diff --git a/.agents/skills/gstack-plan-design-review/SKILL.md b/.agents/skills/gstack-plan-design-review/SKILL.md index 53186772..92a5dc56 100644 --- a/.agents/skills/gstack-plan-design-review/SKILL.md +++ b/.agents/skills/gstack-plan-design-review/SKILL.md @@ -59,16 +59,28 @@ Only run `open` if the user says yes. Always run `touch` to mark as seen. This o If `TEL_PROMPTED` is `no` AND `LAKE_INTRO` is `yes`: After the lake intro is handled, ask the user about telemetry. Use AskUserQuestion: -> gstack can share anonymous usage data (which skills you use, how long they take, crash info) -> to help improve the project. No code, file paths, or repo names are ever sent. +> Help gstack get better! Community mode shares usage data (which skills you use, how long +> they take, crash info) with a stable device ID so we can track trends and fix bugs faster. +> No code, file paths, or repo names are ever sent. > Change anytime with `gstack-config set telemetry off`. Options: -- A) Yes, share anonymous data (recommended) +- A) Help gstack get better! (recommended) - B) No thanks -If A: run `~/.codex/skills/gstack/bin/gstack-config set telemetry anonymous` -If B: run `~/.codex/skills/gstack/bin/gstack-config set telemetry off` +If A: run `~/.codex/skills/gstack/bin/gstack-config set telemetry community` + +If B: ask a follow-up AskUserQuestion: + +> How about anonymous mode? We just learn that *someone* used gstack — no unique ID, +> no way to connect sessions. Just a counter that helps us know if anyone's out there. + +Options: +- A) Sure, anonymous is fine +- B) No thanks, fully off + +If B→A: run `~/.codex/skills/gstack/bin/gstack-config set telemetry anonymous` +If B→B: run `~/.codex/skills/gstack/bin/gstack-config set telemetry off` Always run: ```bash @@ -181,7 +193,14 @@ RECOMMENDATION: [what the user should do next] After the skill workflow completes (success, error, or abort), log the telemetry event. Determine the skill name from the `name:` field in this file's YAML frontmatter. Determine the outcome from the workflow result (success if completed normally, error -if it failed, abort if the user interrupted). Run this bash: +if it failed, abort if the user interrupted). + +**PLAN MODE EXCEPTION — ALWAYS RUN:** This command writes telemetry to +`~/.gstack/analytics/` (user config directory, not project files). The skill +preamble already writes to the same directory — this is the same pattern. +Skipping this command loses session duration and outcome data. + +Run this bash: ```bash _TEL_END=$(date +%s) @@ -460,7 +479,13 @@ If any AskUserQuestion goes unanswered, note it here. Never silently default to ## Review Log -After producing the Completion Summary above, persist the review result: +After producing the Completion Summary above, persist the review result. + +**PLAN MODE EXCEPTION — ALWAYS RUN:** This command writes review metadata to +`~/.gstack/` (user config directory, not project files). The skill preamble +already writes to `~/.gstack/sessions/` and `~/.gstack/analytics/` — this is +the same pattern. The review dashboard depends on this data. Skipping this +command breaks the review readiness dashboard in /ship. ```bash ~/.codex/skills/gstack/bin/gstack-review-log '{"skill":"plan-design-review","timestamp":"TIMESTAMP","status":"STATUS","overall_score":N,"unresolved":N,"decisions_made":N,"commit":"COMMIT"}' diff --git a/.agents/skills/gstack-plan-eng-review/SKILL.md b/.agents/skills/gstack-plan-eng-review/SKILL.md index 37ea990e..492bf9f8 100644 --- a/.agents/skills/gstack-plan-eng-review/SKILL.md +++ b/.agents/skills/gstack-plan-eng-review/SKILL.md @@ -58,16 +58,28 @@ Only run `open` if the user says yes. Always run `touch` to mark as seen. This o If `TEL_PROMPTED` is `no` AND `LAKE_INTRO` is `yes`: After the lake intro is handled, ask the user about telemetry. Use AskUserQuestion: -> gstack can share anonymous usage data (which skills you use, how long they take, crash info) -> to help improve the project. No code, file paths, or repo names are ever sent. +> Help gstack get better! Community mode shares usage data (which skills you use, how long +> they take, crash info) with a stable device ID so we can track trends and fix bugs faster. +> No code, file paths, or repo names are ever sent. > Change anytime with `gstack-config set telemetry off`. Options: -- A) Yes, share anonymous data (recommended) +- A) Help gstack get better! (recommended) - B) No thanks -If A: run `~/.codex/skills/gstack/bin/gstack-config set telemetry anonymous` -If B: run `~/.codex/skills/gstack/bin/gstack-config set telemetry off` +If A: run `~/.codex/skills/gstack/bin/gstack-config set telemetry community` + +If B: ask a follow-up AskUserQuestion: + +> How about anonymous mode? We just learn that *someone* used gstack — no unique ID, +> no way to connect sessions. Just a counter that helps us know if anyone's out there. + +Options: +- A) Sure, anonymous is fine +- B) No thanks, fully off + +If B→A: run `~/.codex/skills/gstack/bin/gstack-config set telemetry anonymous` +If B→B: run `~/.codex/skills/gstack/bin/gstack-config set telemetry off` Always run: ```bash @@ -180,7 +192,14 @@ RECOMMENDATION: [what the user should do next] After the skill workflow completes (success, error, or abort), log the telemetry event. Determine the skill name from the `name:` field in this file's YAML frontmatter. Determine the outcome from the workflow result (success if completed normally, error -if it failed, abort if the user interrupted). Run this bash: +if it failed, abort if the user interrupted). + +**PLAN MODE EXCEPTION — ALWAYS RUN:** This command writes telemetry to +`~/.gstack/analytics/` (user config directory, not project files). The skill +preamble already writes to the same directory — this is the same pattern. +Skipping this command loses session duration and outcome data. + +Run this bash: ```bash _TEL_END=$(date +%s) @@ -430,7 +449,13 @@ Check the git log for this branch. If there are prior commits suggesting a previ ## Review Log -After producing the Completion Summary above, persist the review result: +After producing the Completion Summary above, persist the review result. + +**PLAN MODE EXCEPTION — ALWAYS RUN:** This command writes review metadata to +`~/.gstack/` (user config directory, not project files). The skill preamble +already writes to `~/.gstack/sessions/` and `~/.gstack/analytics/` — this is +the same pattern. The review dashboard depends on this data. Skipping this +command breaks the review readiness dashboard in /ship. ```bash ~/.codex/skills/gstack/bin/gstack-review-log '{"skill":"plan-eng-review","timestamp":"TIMESTAMP","status":"STATUS","unresolved":N,"critical_gaps":N,"mode":"MODE","commit":"COMMIT"}' diff --git a/.agents/skills/gstack-qa-only/SKILL.md b/.agents/skills/gstack-qa-only/SKILL.md index dba7efd1..6a6f8a7d 100644 --- a/.agents/skills/gstack-qa-only/SKILL.md +++ b/.agents/skills/gstack-qa-only/SKILL.md @@ -57,16 +57,28 @@ Only run `open` if the user says yes. Always run `touch` to mark as seen. This o If `TEL_PROMPTED` is `no` AND `LAKE_INTRO` is `yes`: After the lake intro is handled, ask the user about telemetry. Use AskUserQuestion: -> gstack can share anonymous usage data (which skills you use, how long they take, crash info) -> to help improve the project. No code, file paths, or repo names are ever sent. +> Help gstack get better! Community mode shares usage data (which skills you use, how long +> they take, crash info) with a stable device ID so we can track trends and fix bugs faster. +> No code, file paths, or repo names are ever sent. > Change anytime with `gstack-config set telemetry off`. Options: -- A) Yes, share anonymous data (recommended) +- A) Help gstack get better! (recommended) - B) No thanks -If A: run `~/.codex/skills/gstack/bin/gstack-config set telemetry anonymous` -If B: run `~/.codex/skills/gstack/bin/gstack-config set telemetry off` +If A: run `~/.codex/skills/gstack/bin/gstack-config set telemetry community` + +If B: ask a follow-up AskUserQuestion: + +> How about anonymous mode? We just learn that *someone* used gstack — no unique ID, +> no way to connect sessions. Just a counter that helps us know if anyone's out there. + +Options: +- A) Sure, anonymous is fine +- B) No thanks, fully off + +If B→A: run `~/.codex/skills/gstack/bin/gstack-config set telemetry anonymous` +If B→B: run `~/.codex/skills/gstack/bin/gstack-config set telemetry off` Always run: ```bash @@ -179,7 +191,14 @@ RECOMMENDATION: [what the user should do next] After the skill workflow completes (success, error, or abort), log the telemetry event. Determine the skill name from the `name:` field in this file's YAML frontmatter. Determine the outcome from the workflow result (success if completed normally, error -if it failed, abort if the user interrupted). Run this bash: +if it failed, abort if the user interrupted). + +**PLAN MODE EXCEPTION — ALWAYS RUN:** This command writes telemetry to +`~/.gstack/analytics/` (user config directory, not project files). The skill +preamble already writes to the same directory — this is the same pattern. +Skipping this command loses session duration and outcome data. + +Run this bash: ```bash _TEL_END=$(date +%s) diff --git a/.agents/skills/gstack-qa/SKILL.md b/.agents/skills/gstack-qa/SKILL.md index 88bfc49d..0617c447 100644 --- a/.agents/skills/gstack-qa/SKILL.md +++ b/.agents/skills/gstack-qa/SKILL.md @@ -60,16 +60,28 @@ Only run `open` if the user says yes. Always run `touch` to mark as seen. This o If `TEL_PROMPTED` is `no` AND `LAKE_INTRO` is `yes`: After the lake intro is handled, ask the user about telemetry. Use AskUserQuestion: -> gstack can share anonymous usage data (which skills you use, how long they take, crash info) -> to help improve the project. No code, file paths, or repo names are ever sent. +> Help gstack get better! Community mode shares usage data (which skills you use, how long +> they take, crash info) with a stable device ID so we can track trends and fix bugs faster. +> No code, file paths, or repo names are ever sent. > Change anytime with `gstack-config set telemetry off`. Options: -- A) Yes, share anonymous data (recommended) +- A) Help gstack get better! (recommended) - B) No thanks -If A: run `~/.codex/skills/gstack/bin/gstack-config set telemetry anonymous` -If B: run `~/.codex/skills/gstack/bin/gstack-config set telemetry off` +If A: run `~/.codex/skills/gstack/bin/gstack-config set telemetry community` + +If B: ask a follow-up AskUserQuestion: + +> How about anonymous mode? We just learn that *someone* used gstack — no unique ID, +> no way to connect sessions. Just a counter that helps us know if anyone's out there. + +Options: +- A) Sure, anonymous is fine +- B) No thanks, fully off + +If B→A: run `~/.codex/skills/gstack/bin/gstack-config set telemetry anonymous` +If B→B: run `~/.codex/skills/gstack/bin/gstack-config set telemetry off` Always run: ```bash @@ -182,7 +194,14 @@ RECOMMENDATION: [what the user should do next] After the skill workflow completes (success, error, or abort), log the telemetry event. Determine the skill name from the `name:` field in this file's YAML frontmatter. Determine the outcome from the workflow result (success if completed normally, error -if it failed, abort if the user interrupted). Run this bash: +if it failed, abort if the user interrupted). + +**PLAN MODE EXCEPTION — ALWAYS RUN:** This command writes telemetry to +`~/.gstack/analytics/` (user config directory, not project files). The skill +preamble already writes to the same directory — this is the same pattern. +Skipping this command loses session duration and outcome data. + +Run this bash: ```bash _TEL_END=$(date +%s) diff --git a/.agents/skills/gstack-retro/SKILL.md b/.agents/skills/gstack-retro/SKILL.md index 057d45d5..2a30b527 100644 --- a/.agents/skills/gstack-retro/SKILL.md +++ b/.agents/skills/gstack-retro/SKILL.md @@ -57,16 +57,28 @@ Only run `open` if the user says yes. Always run `touch` to mark as seen. This o If `TEL_PROMPTED` is `no` AND `LAKE_INTRO` is `yes`: After the lake intro is handled, ask the user about telemetry. Use AskUserQuestion: -> gstack can share anonymous usage data (which skills you use, how long they take, crash info) -> to help improve the project. No code, file paths, or repo names are ever sent. +> Help gstack get better! Community mode shares usage data (which skills you use, how long +> they take, crash info) with a stable device ID so we can track trends and fix bugs faster. +> No code, file paths, or repo names are ever sent. > Change anytime with `gstack-config set telemetry off`. Options: -- A) Yes, share anonymous data (recommended) +- A) Help gstack get better! (recommended) - B) No thanks -If A: run `~/.codex/skills/gstack/bin/gstack-config set telemetry anonymous` -If B: run `~/.codex/skills/gstack/bin/gstack-config set telemetry off` +If A: run `~/.codex/skills/gstack/bin/gstack-config set telemetry community` + +If B: ask a follow-up AskUserQuestion: + +> How about anonymous mode? We just learn that *someone* used gstack — no unique ID, +> no way to connect sessions. Just a counter that helps us know if anyone's out there. + +Options: +- A) Sure, anonymous is fine +- B) No thanks, fully off + +If B→A: run `~/.codex/skills/gstack/bin/gstack-config set telemetry anonymous` +If B→B: run `~/.codex/skills/gstack/bin/gstack-config set telemetry off` Always run: ```bash @@ -179,7 +191,14 @@ RECOMMENDATION: [what the user should do next] After the skill workflow completes (success, error, or abort), log the telemetry event. Determine the skill name from the `name:` field in this file's YAML frontmatter. Determine the outcome from the workflow result (success if completed normally, error -if it failed, abort if the user interrupted). Run this bash: +if it failed, abort if the user interrupted). + +**PLAN MODE EXCEPTION — ALWAYS RUN:** This command writes telemetry to +`~/.gstack/analytics/` (user config directory, not project files). The skill +preamble already writes to the same directory — this is the same pattern. +Skipping this command loses session duration and outcome data. + +Run this bash: ```bash _TEL_END=$(date +%s) diff --git a/.agents/skills/gstack-review/SKILL.md b/.agents/skills/gstack-review/SKILL.md index 94dc0e74..0253dcac 100644 --- a/.agents/skills/gstack-review/SKILL.md +++ b/.agents/skills/gstack-review/SKILL.md @@ -56,16 +56,28 @@ Only run `open` if the user says yes. Always run `touch` to mark as seen. This o If `TEL_PROMPTED` is `no` AND `LAKE_INTRO` is `yes`: After the lake intro is handled, ask the user about telemetry. Use AskUserQuestion: -> gstack can share anonymous usage data (which skills you use, how long they take, crash info) -> to help improve the project. No code, file paths, or repo names are ever sent. +> Help gstack get better! Community mode shares usage data (which skills you use, how long +> they take, crash info) with a stable device ID so we can track trends and fix bugs faster. +> No code, file paths, or repo names are ever sent. > Change anytime with `gstack-config set telemetry off`. Options: -- A) Yes, share anonymous data (recommended) +- A) Help gstack get better! (recommended) - B) No thanks -If A: run `~/.codex/skills/gstack/bin/gstack-config set telemetry anonymous` -If B: run `~/.codex/skills/gstack/bin/gstack-config set telemetry off` +If A: run `~/.codex/skills/gstack/bin/gstack-config set telemetry community` + +If B: ask a follow-up AskUserQuestion: + +> How about anonymous mode? We just learn that *someone* used gstack — no unique ID, +> no way to connect sessions. Just a counter that helps us know if anyone's out there. + +Options: +- A) Sure, anonymous is fine +- B) No thanks, fully off + +If B→A: run `~/.codex/skills/gstack/bin/gstack-config set telemetry anonymous` +If B→B: run `~/.codex/skills/gstack/bin/gstack-config set telemetry off` Always run: ```bash @@ -178,7 +190,14 @@ RECOMMENDATION: [what the user should do next] After the skill workflow completes (success, error, or abort), log the telemetry event. Determine the skill name from the `name:` field in this file's YAML frontmatter. Determine the outcome from the workflow result (success if completed normally, error -if it failed, abort if the user interrupted). Run this bash: +if it failed, abort if the user interrupted). + +**PLAN MODE EXCEPTION — ALWAYS RUN:** This command writes telemetry to +`~/.gstack/analytics/` (user config directory, not project files). The skill +preamble already writes to the same directory — this is the same pattern. +Skipping this command loses session duration and outcome data. + +Run this bash: ```bash _TEL_END=$(date +%s) diff --git a/.agents/skills/gstack-setup-browser-cookies/SKILL.md b/.agents/skills/gstack-setup-browser-cookies/SKILL.md index 1fccb626..34f95391 100644 --- a/.agents/skills/gstack-setup-browser-cookies/SKILL.md +++ b/.agents/skills/gstack-setup-browser-cookies/SKILL.md @@ -56,16 +56,28 @@ Only run `open` if the user says yes. Always run `touch` to mark as seen. This o If `TEL_PROMPTED` is `no` AND `LAKE_INTRO` is `yes`: After the lake intro is handled, ask the user about telemetry. Use AskUserQuestion: -> gstack can share anonymous usage data (which skills you use, how long they take, crash info) -> to help improve the project. No code, file paths, or repo names are ever sent. +> Help gstack get better! Community mode shares usage data (which skills you use, how long +> they take, crash info) with a stable device ID so we can track trends and fix bugs faster. +> No code, file paths, or repo names are ever sent. > Change anytime with `gstack-config set telemetry off`. Options: -- A) Yes, share anonymous data (recommended) +- A) Help gstack get better! (recommended) - B) No thanks -If A: run `~/.codex/skills/gstack/bin/gstack-config set telemetry anonymous` -If B: run `~/.codex/skills/gstack/bin/gstack-config set telemetry off` +If A: run `~/.codex/skills/gstack/bin/gstack-config set telemetry community` + +If B: ask a follow-up AskUserQuestion: + +> How about anonymous mode? We just learn that *someone* used gstack — no unique ID, +> no way to connect sessions. Just a counter that helps us know if anyone's out there. + +Options: +- A) Sure, anonymous is fine +- B) No thanks, fully off + +If B→A: run `~/.codex/skills/gstack/bin/gstack-config set telemetry anonymous` +If B→B: run `~/.codex/skills/gstack/bin/gstack-config set telemetry off` Always run: ```bash @@ -178,7 +190,14 @@ RECOMMENDATION: [what the user should do next] After the skill workflow completes (success, error, or abort), log the telemetry event. Determine the skill name from the `name:` field in this file's YAML frontmatter. Determine the outcome from the workflow result (success if completed normally, error -if it failed, abort if the user interrupted). Run this bash: +if it failed, abort if the user interrupted). + +**PLAN MODE EXCEPTION — ALWAYS RUN:** This command writes telemetry to +`~/.gstack/analytics/` (user config directory, not project files). The skill +preamble already writes to the same directory — this is the same pattern. +Skipping this command loses session duration and outcome data. + +Run this bash: ```bash _TEL_END=$(date +%s) diff --git a/.agents/skills/gstack-ship/SKILL.md b/.agents/skills/gstack-ship/SKILL.md index 8b66d09e..da20fd26 100644 --- a/.agents/skills/gstack-ship/SKILL.md +++ b/.agents/skills/gstack-ship/SKILL.md @@ -54,16 +54,28 @@ Only run `open` if the user says yes. Always run `touch` to mark as seen. This o If `TEL_PROMPTED` is `no` AND `LAKE_INTRO` is `yes`: After the lake intro is handled, ask the user about telemetry. Use AskUserQuestion: -> gstack can share anonymous usage data (which skills you use, how long they take, crash info) -> to help improve the project. No code, file paths, or repo names are ever sent. +> Help gstack get better! Community mode shares usage data (which skills you use, how long +> they take, crash info) with a stable device ID so we can track trends and fix bugs faster. +> No code, file paths, or repo names are ever sent. > Change anytime with `gstack-config set telemetry off`. Options: -- A) Yes, share anonymous data (recommended) +- A) Help gstack get better! (recommended) - B) No thanks -If A: run `~/.codex/skills/gstack/bin/gstack-config set telemetry anonymous` -If B: run `~/.codex/skills/gstack/bin/gstack-config set telemetry off` +If A: run `~/.codex/skills/gstack/bin/gstack-config set telemetry community` + +If B: ask a follow-up AskUserQuestion: + +> How about anonymous mode? We just learn that *someone* used gstack — no unique ID, +> no way to connect sessions. Just a counter that helps us know if anyone's out there. + +Options: +- A) Sure, anonymous is fine +- B) No thanks, fully off + +If B→A: run `~/.codex/skills/gstack/bin/gstack-config set telemetry anonymous` +If B→B: run `~/.codex/skills/gstack/bin/gstack-config set telemetry off` Always run: ```bash @@ -176,7 +188,14 @@ RECOMMENDATION: [what the user should do next] After the skill workflow completes (success, error, or abort), log the telemetry event. Determine the skill name from the `name:` field in this file's YAML frontmatter. Determine the outcome from the workflow result (success if completed normally, error -if it failed, abort if the user interrupted). Run this bash: +if it failed, abort if the user interrupted). + +**PLAN MODE EXCEPTION — ALWAYS RUN:** This command writes telemetry to +`~/.gstack/analytics/` (user config directory, not project files). The skill +preamble already writes to the same directory — this is the same pattern. +Skipping this command loses session duration and outcome data. + +Run this bash: ```bash _TEL_END=$(date +%s) diff --git a/.agents/skills/gstack/SKILL.md b/.agents/skills/gstack/SKILL.md index d517f861..3b4f93b5 100644 --- a/.agents/skills/gstack/SKILL.md +++ b/.agents/skills/gstack/SKILL.md @@ -89,16 +89,28 @@ Only run `open` if the user says yes. Always run `touch` to mark as seen. This o If `TEL_PROMPTED` is `no` AND `LAKE_INTRO` is `yes`: After the lake intro is handled, ask the user about telemetry. Use AskUserQuestion: -> gstack can share anonymous usage data (which skills you use, how long they take, crash info) -> to help improve the project. No code, file paths, or repo names are ever sent. +> Help gstack get better! Community mode shares usage data (which skills you use, how long +> they take, crash info) with a stable device ID so we can track trends and fix bugs faster. +> No code, file paths, or repo names are ever sent. > Change anytime with `gstack-config set telemetry off`. Options: -- A) Yes, share anonymous data (recommended) +- A) Help gstack get better! (recommended) - B) No thanks -If A: run `~/.codex/skills/gstack/bin/gstack-config set telemetry anonymous` -If B: run `~/.codex/skills/gstack/bin/gstack-config set telemetry off` +If A: run `~/.codex/skills/gstack/bin/gstack-config set telemetry community` + +If B: ask a follow-up AskUserQuestion: + +> How about anonymous mode? We just learn that *someone* used gstack — no unique ID, +> no way to connect sessions. Just a counter that helps us know if anyone's out there. + +Options: +- A) Sure, anonymous is fine +- B) No thanks, fully off + +If B→A: run `~/.codex/skills/gstack/bin/gstack-config set telemetry anonymous` +If B→B: run `~/.codex/skills/gstack/bin/gstack-config set telemetry off` Always run: ```bash @@ -211,7 +223,14 @@ RECOMMENDATION: [what the user should do next] After the skill workflow completes (success, error, or abort), log the telemetry event. Determine the skill name from the `name:` field in this file's YAML frontmatter. Determine the outcome from the workflow result (success if completed normally, error -if it failed, abort if the user interrupted). Run this bash: +if it failed, abort if the user interrupted). + +**PLAN MODE EXCEPTION — ALWAYS RUN:** This command writes telemetry to +`~/.gstack/analytics/` (user config directory, not project files). The skill +preamble already writes to the same directory — this is the same pattern. +Skipping this command loses session duration and outcome data. + +Run this bash: ```bash _TEL_END=$(date +%s) diff --git a/CHANGELOG.md b/CHANGELOG.md index f85beb3f..74572e22 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,15 @@ # Changelog +## [0.9.0.1] - 2026-03-19 + +### Changed + +- **Telemetry opt-in now defaults to community mode.** First-time prompt asks "Help gstack get better!" (community mode with stable device ID for trend tracking). If you decline, you get a second chance with anonymous mode (no unique ID, just a counter). Respects your choice either way. + +### Fixed + +- **Review logs and telemetry now persist during plan mode.** When you ran `/plan-ceo-review`, `/plan-eng-review`, or `/plan-design-review` in plan mode, the review result wasn't saved to disk — so the dashboard showed stale or missing entries even though you just completed a review. Same issue affected telemetry logging at the end of every skill. Both now work reliably in plan mode. + ## [0.9.0] - 2026-03-19 — Works on Codex, Gemini CLI, and Cursor **gstack now works on any AI agent that supports the open SKILL.md standard.** Install once, use from Claude Code, OpenAI Codex CLI, Google Gemini CLI, or Cursor. All 21 skills are available in `.agents/skills/` -- just run `./setup --host codex` or `./setup --host auto` and your agent discovers them automatically. diff --git a/SKILL.md b/SKILL.md index 1f1085e6..fe66b618 100644 --- a/SKILL.md +++ b/SKILL.md @@ -95,16 +95,28 @@ Only run `open` if the user says yes. Always run `touch` to mark as seen. This o If `TEL_PROMPTED` is `no` AND `LAKE_INTRO` is `yes`: After the lake intro is handled, ask the user about telemetry. Use AskUserQuestion: -> gstack can share anonymous usage data (which skills you use, how long they take, crash info) -> to help improve the project. No code, file paths, or repo names are ever sent. +> Help gstack get better! Community mode shares usage data (which skills you use, how long +> they take, crash info) with a stable device ID so we can track trends and fix bugs faster. +> No code, file paths, or repo names are ever sent. > Change anytime with `gstack-config set telemetry off`. Options: -- A) Yes, share anonymous data (recommended) +- A) Help gstack get better! (recommended) - B) No thanks -If A: run `~/.claude/skills/gstack/bin/gstack-config set telemetry anonymous` -If B: run `~/.claude/skills/gstack/bin/gstack-config set telemetry off` +If A: run `~/.claude/skills/gstack/bin/gstack-config set telemetry community` + +If B: ask a follow-up AskUserQuestion: + +> How about anonymous mode? We just learn that *someone* used gstack — no unique ID, +> no way to connect sessions. Just a counter that helps us know if anyone's out there. + +Options: +- A) Sure, anonymous is fine +- B) No thanks, fully off + +If B→A: run `~/.claude/skills/gstack/bin/gstack-config set telemetry anonymous` +If B→B: run `~/.claude/skills/gstack/bin/gstack-config set telemetry off` Always run: ```bash @@ -217,7 +229,14 @@ RECOMMENDATION: [what the user should do next] After the skill workflow completes (success, error, or abort), log the telemetry event. Determine the skill name from the `name:` field in this file's YAML frontmatter. Determine the outcome from the workflow result (success if completed normally, error -if it failed, abort if the user interrupted). Run this bash: +if it failed, abort if the user interrupted). + +**PLAN MODE EXCEPTION — ALWAYS RUN:** This command writes telemetry to +`~/.gstack/analytics/` (user config directory, not project files). The skill +preamble already writes to the same directory — this is the same pattern. +Skipping this command loses session duration and outcome data. + +Run this bash: ```bash _TEL_END=$(date +%s) diff --git a/VERSION b/VERSION index ac39a106..15e36e66 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -0.9.0 +0.9.0.1 diff --git a/browse/SKILL.md b/browse/SKILL.md index e8ae4450..8782ccbf 100644 --- a/browse/SKILL.md +++ b/browse/SKILL.md @@ -64,16 +64,28 @@ Only run `open` if the user says yes. Always run `touch` to mark as seen. This o If `TEL_PROMPTED` is `no` AND `LAKE_INTRO` is `yes`: After the lake intro is handled, ask the user about telemetry. Use AskUserQuestion: -> gstack can share anonymous usage data (which skills you use, how long they take, crash info) -> to help improve the project. No code, file paths, or repo names are ever sent. +> Help gstack get better! Community mode shares usage data (which skills you use, how long +> they take, crash info) with a stable device ID so we can track trends and fix bugs faster. +> No code, file paths, or repo names are ever sent. > Change anytime with `gstack-config set telemetry off`. Options: -- A) Yes, share anonymous data (recommended) +- A) Help gstack get better! (recommended) - B) No thanks -If A: run `~/.claude/skills/gstack/bin/gstack-config set telemetry anonymous` -If B: run `~/.claude/skills/gstack/bin/gstack-config set telemetry off` +If A: run `~/.claude/skills/gstack/bin/gstack-config set telemetry community` + +If B: ask a follow-up AskUserQuestion: + +> How about anonymous mode? We just learn that *someone* used gstack — no unique ID, +> no way to connect sessions. Just a counter that helps us know if anyone's out there. + +Options: +- A) Sure, anonymous is fine +- B) No thanks, fully off + +If B→A: run `~/.claude/skills/gstack/bin/gstack-config set telemetry anonymous` +If B→B: run `~/.claude/skills/gstack/bin/gstack-config set telemetry off` Always run: ```bash @@ -186,7 +198,14 @@ RECOMMENDATION: [what the user should do next] After the skill workflow completes (success, error, or abort), log the telemetry event. Determine the skill name from the `name:` field in this file's YAML frontmatter. Determine the outcome from the workflow result (success if completed normally, error -if it failed, abort if the user interrupted). Run this bash: +if it failed, abort if the user interrupted). + +**PLAN MODE EXCEPTION — ALWAYS RUN:** This command writes telemetry to +`~/.gstack/analytics/` (user config directory, not project files). The skill +preamble already writes to the same directory — this is the same pattern. +Skipping this command loses session duration and outcome data. + +Run this bash: ```bash _TEL_END=$(date +%s) diff --git a/codex/SKILL.md b/codex/SKILL.md index c67acc2c..19a341dd 100644 --- a/codex/SKILL.md +++ b/codex/SKILL.md @@ -65,16 +65,28 @@ Only run `open` if the user says yes. Always run `touch` to mark as seen. This o If `TEL_PROMPTED` is `no` AND `LAKE_INTRO` is `yes`: After the lake intro is handled, ask the user about telemetry. Use AskUserQuestion: -> gstack can share anonymous usage data (which skills you use, how long they take, crash info) -> to help improve the project. No code, file paths, or repo names are ever sent. +> Help gstack get better! Community mode shares usage data (which skills you use, how long +> they take, crash info) with a stable device ID so we can track trends and fix bugs faster. +> No code, file paths, or repo names are ever sent. > Change anytime with `gstack-config set telemetry off`. Options: -- A) Yes, share anonymous data (recommended) +- A) Help gstack get better! (recommended) - B) No thanks -If A: run `~/.claude/skills/gstack/bin/gstack-config set telemetry anonymous` -If B: run `~/.claude/skills/gstack/bin/gstack-config set telemetry off` +If A: run `~/.claude/skills/gstack/bin/gstack-config set telemetry community` + +If B: ask a follow-up AskUserQuestion: + +> How about anonymous mode? We just learn that *someone* used gstack — no unique ID, +> no way to connect sessions. Just a counter that helps us know if anyone's out there. + +Options: +- A) Sure, anonymous is fine +- B) No thanks, fully off + +If B→A: run `~/.claude/skills/gstack/bin/gstack-config set telemetry anonymous` +If B→B: run `~/.claude/skills/gstack/bin/gstack-config set telemetry off` Always run: ```bash @@ -187,7 +199,14 @@ RECOMMENDATION: [what the user should do next] After the skill workflow completes (success, error, or abort), log the telemetry event. Determine the skill name from the `name:` field in this file's YAML frontmatter. Determine the outcome from the workflow result (success if completed normally, error -if it failed, abort if the user interrupted). Run this bash: +if it failed, abort if the user interrupted). + +**PLAN MODE EXCEPTION — ALWAYS RUN:** This command writes telemetry to +`~/.gstack/analytics/` (user config directory, not project files). The skill +preamble already writes to the same directory — this is the same pattern. +Skipping this command loses session duration and outcome data. + +Run this bash: ```bash _TEL_END=$(date +%s) diff --git a/design-consultation/SKILL.md b/design-consultation/SKILL.md index 5d70420a..cc21fa7e 100644 --- a/design-consultation/SKILL.md +++ b/design-consultation/SKILL.md @@ -69,16 +69,28 @@ Only run `open` if the user says yes. Always run `touch` to mark as seen. This o If `TEL_PROMPTED` is `no` AND `LAKE_INTRO` is `yes`: After the lake intro is handled, ask the user about telemetry. Use AskUserQuestion: -> gstack can share anonymous usage data (which skills you use, how long they take, crash info) -> to help improve the project. No code, file paths, or repo names are ever sent. +> Help gstack get better! Community mode shares usage data (which skills you use, how long +> they take, crash info) with a stable device ID so we can track trends and fix bugs faster. +> No code, file paths, or repo names are ever sent. > Change anytime with `gstack-config set telemetry off`. Options: -- A) Yes, share anonymous data (recommended) +- A) Help gstack get better! (recommended) - B) No thanks -If A: run `~/.claude/skills/gstack/bin/gstack-config set telemetry anonymous` -If B: run `~/.claude/skills/gstack/bin/gstack-config set telemetry off` +If A: run `~/.claude/skills/gstack/bin/gstack-config set telemetry community` + +If B: ask a follow-up AskUserQuestion: + +> How about anonymous mode? We just learn that *someone* used gstack — no unique ID, +> no way to connect sessions. Just a counter that helps us know if anyone's out there. + +Options: +- A) Sure, anonymous is fine +- B) No thanks, fully off + +If B→A: run `~/.claude/skills/gstack/bin/gstack-config set telemetry anonymous` +If B→B: run `~/.claude/skills/gstack/bin/gstack-config set telemetry off` Always run: ```bash @@ -191,7 +203,14 @@ RECOMMENDATION: [what the user should do next] After the skill workflow completes (success, error, or abort), log the telemetry event. Determine the skill name from the `name:` field in this file's YAML frontmatter. Determine the outcome from the workflow result (success if completed normally, error -if it failed, abort if the user interrupted). Run this bash: +if it failed, abort if the user interrupted). + +**PLAN MODE EXCEPTION — ALWAYS RUN:** This command writes telemetry to +`~/.gstack/analytics/` (user config directory, not project files). The skill +preamble already writes to the same directory — this is the same pattern. +Skipping this command loses session duration and outcome data. + +Run this bash: ```bash _TEL_END=$(date +%s) diff --git a/design-review/SKILL.md b/design-review/SKILL.md index 5fdaa989..cbc0d5e8 100644 --- a/design-review/SKILL.md +++ b/design-review/SKILL.md @@ -69,16 +69,28 @@ Only run `open` if the user says yes. Always run `touch` to mark as seen. This o If `TEL_PROMPTED` is `no` AND `LAKE_INTRO` is `yes`: After the lake intro is handled, ask the user about telemetry. Use AskUserQuestion: -> gstack can share anonymous usage data (which skills you use, how long they take, crash info) -> to help improve the project. No code, file paths, or repo names are ever sent. +> Help gstack get better! Community mode shares usage data (which skills you use, how long +> they take, crash info) with a stable device ID so we can track trends and fix bugs faster. +> No code, file paths, or repo names are ever sent. > Change anytime with `gstack-config set telemetry off`. Options: -- A) Yes, share anonymous data (recommended) +- A) Help gstack get better! (recommended) - B) No thanks -If A: run `~/.claude/skills/gstack/bin/gstack-config set telemetry anonymous` -If B: run `~/.claude/skills/gstack/bin/gstack-config set telemetry off` +If A: run `~/.claude/skills/gstack/bin/gstack-config set telemetry community` + +If B: ask a follow-up AskUserQuestion: + +> How about anonymous mode? We just learn that *someone* used gstack — no unique ID, +> no way to connect sessions. Just a counter that helps us know if anyone's out there. + +Options: +- A) Sure, anonymous is fine +- B) No thanks, fully off + +If B→A: run `~/.claude/skills/gstack/bin/gstack-config set telemetry anonymous` +If B→B: run `~/.claude/skills/gstack/bin/gstack-config set telemetry off` Always run: ```bash @@ -191,7 +203,14 @@ RECOMMENDATION: [what the user should do next] After the skill workflow completes (success, error, or abort), log the telemetry event. Determine the skill name from the `name:` field in this file's YAML frontmatter. Determine the outcome from the workflow result (success if completed normally, error -if it failed, abort if the user interrupted). Run this bash: +if it failed, abort if the user interrupted). + +**PLAN MODE EXCEPTION — ALWAYS RUN:** This command writes telemetry to +`~/.gstack/analytics/` (user config directory, not project files). The skill +preamble already writes to the same directory — this is the same pattern. +Skipping this command loses session duration and outcome data. + +Run this bash: ```bash _TEL_END=$(date +%s) diff --git a/document-release/SKILL.md b/document-release/SKILL.md index cf8656e4..d71d5d3b 100644 --- a/document-release/SKILL.md +++ b/document-release/SKILL.md @@ -66,16 +66,28 @@ Only run `open` if the user says yes. Always run `touch` to mark as seen. This o If `TEL_PROMPTED` is `no` AND `LAKE_INTRO` is `yes`: After the lake intro is handled, ask the user about telemetry. Use AskUserQuestion: -> gstack can share anonymous usage data (which skills you use, how long they take, crash info) -> to help improve the project. No code, file paths, or repo names are ever sent. +> Help gstack get better! Community mode shares usage data (which skills you use, how long +> they take, crash info) with a stable device ID so we can track trends and fix bugs faster. +> No code, file paths, or repo names are ever sent. > Change anytime with `gstack-config set telemetry off`. Options: -- A) Yes, share anonymous data (recommended) +- A) Help gstack get better! (recommended) - B) No thanks -If A: run `~/.claude/skills/gstack/bin/gstack-config set telemetry anonymous` -If B: run `~/.claude/skills/gstack/bin/gstack-config set telemetry off` +If A: run `~/.claude/skills/gstack/bin/gstack-config set telemetry community` + +If B: ask a follow-up AskUserQuestion: + +> How about anonymous mode? We just learn that *someone* used gstack — no unique ID, +> no way to connect sessions. Just a counter that helps us know if anyone's out there. + +Options: +- A) Sure, anonymous is fine +- B) No thanks, fully off + +If B→A: run `~/.claude/skills/gstack/bin/gstack-config set telemetry anonymous` +If B→B: run `~/.claude/skills/gstack/bin/gstack-config set telemetry off` Always run: ```bash @@ -188,7 +200,14 @@ RECOMMENDATION: [what the user should do next] After the skill workflow completes (success, error, or abort), log the telemetry event. Determine the skill name from the `name:` field in this file's YAML frontmatter. Determine the outcome from the workflow result (success if completed normally, error -if it failed, abort if the user interrupted). Run this bash: +if it failed, abort if the user interrupted). + +**PLAN MODE EXCEPTION — ALWAYS RUN:** This command writes telemetry to +`~/.gstack/analytics/` (user config directory, not project files). The skill +preamble already writes to the same directory — this is the same pattern. +Skipping this command loses session duration and outcome data. + +Run this bash: ```bash _TEL_END=$(date +%s) diff --git a/investigate/SKILL.md b/investigate/SKILL.md index 17ef4a8b..eccce870 100644 --- a/investigate/SKILL.md +++ b/investigate/SKILL.md @@ -79,16 +79,28 @@ Only run `open` if the user says yes. Always run `touch` to mark as seen. This o If `TEL_PROMPTED` is `no` AND `LAKE_INTRO` is `yes`: After the lake intro is handled, ask the user about telemetry. Use AskUserQuestion: -> gstack can share anonymous usage data (which skills you use, how long they take, crash info) -> to help improve the project. No code, file paths, or repo names are ever sent. +> Help gstack get better! Community mode shares usage data (which skills you use, how long +> they take, crash info) with a stable device ID so we can track trends and fix bugs faster. +> No code, file paths, or repo names are ever sent. > Change anytime with `gstack-config set telemetry off`. Options: -- A) Yes, share anonymous data (recommended) +- A) Help gstack get better! (recommended) - B) No thanks -If A: run `~/.claude/skills/gstack/bin/gstack-config set telemetry anonymous` -If B: run `~/.claude/skills/gstack/bin/gstack-config set telemetry off` +If A: run `~/.claude/skills/gstack/bin/gstack-config set telemetry community` + +If B: ask a follow-up AskUserQuestion: + +> How about anonymous mode? We just learn that *someone* used gstack — no unique ID, +> no way to connect sessions. Just a counter that helps us know if anyone's out there. + +Options: +- A) Sure, anonymous is fine +- B) No thanks, fully off + +If B→A: run `~/.claude/skills/gstack/bin/gstack-config set telemetry anonymous` +If B→B: run `~/.claude/skills/gstack/bin/gstack-config set telemetry off` Always run: ```bash @@ -201,7 +213,14 @@ RECOMMENDATION: [what the user should do next] After the skill workflow completes (success, error, or abort), log the telemetry event. Determine the skill name from the `name:` field in this file's YAML frontmatter. Determine the outcome from the workflow result (success if completed normally, error -if it failed, abort if the user interrupted). Run this bash: +if it failed, abort if the user interrupted). + +**PLAN MODE EXCEPTION — ALWAYS RUN:** This command writes telemetry to +`~/.gstack/analytics/` (user config directory, not project files). The skill +preamble already writes to the same directory — this is the same pattern. +Skipping this command loses session duration and outcome data. + +Run this bash: ```bash _TEL_END=$(date +%s) diff --git a/office-hours/SKILL.md b/office-hours/SKILL.md index 0a2bb310..ff0aeafa 100644 --- a/office-hours/SKILL.md +++ b/office-hours/SKILL.md @@ -70,16 +70,28 @@ Only run `open` if the user says yes. Always run `touch` to mark as seen. This o If `TEL_PROMPTED` is `no` AND `LAKE_INTRO` is `yes`: After the lake intro is handled, ask the user about telemetry. Use AskUserQuestion: -> gstack can share anonymous usage data (which skills you use, how long they take, crash info) -> to help improve the project. No code, file paths, or repo names are ever sent. +> Help gstack get better! Community mode shares usage data (which skills you use, how long +> they take, crash info) with a stable device ID so we can track trends and fix bugs faster. +> No code, file paths, or repo names are ever sent. > Change anytime with `gstack-config set telemetry off`. Options: -- A) Yes, share anonymous data (recommended) +- A) Help gstack get better! (recommended) - B) No thanks -If A: run `~/.claude/skills/gstack/bin/gstack-config set telemetry anonymous` -If B: run `~/.claude/skills/gstack/bin/gstack-config set telemetry off` +If A: run `~/.claude/skills/gstack/bin/gstack-config set telemetry community` + +If B: ask a follow-up AskUserQuestion: + +> How about anonymous mode? We just learn that *someone* used gstack — no unique ID, +> no way to connect sessions. Just a counter that helps us know if anyone's out there. + +Options: +- A) Sure, anonymous is fine +- B) No thanks, fully off + +If B→A: run `~/.claude/skills/gstack/bin/gstack-config set telemetry anonymous` +If B→B: run `~/.claude/skills/gstack/bin/gstack-config set telemetry off` Always run: ```bash @@ -192,7 +204,14 @@ RECOMMENDATION: [what the user should do next] After the skill workflow completes (success, error, or abort), log the telemetry event. Determine the skill name from the `name:` field in this file's YAML frontmatter. Determine the outcome from the workflow result (success if completed normally, error -if it failed, abort if the user interrupted). Run this bash: +if it failed, abort if the user interrupted). + +**PLAN MODE EXCEPTION — ALWAYS RUN:** This command writes telemetry to +`~/.gstack/analytics/` (user config directory, not project files). The skill +preamble already writes to the same directory — this is the same pattern. +Skipping this command loses session duration and outcome data. + +Run this bash: ```bash _TEL_END=$(date +%s) diff --git a/plan-ceo-review/SKILL.md b/plan-ceo-review/SKILL.md index d684ac79..68b234d6 100644 --- a/plan-ceo-review/SKILL.md +++ b/plan-ceo-review/SKILL.md @@ -67,16 +67,28 @@ Only run `open` if the user says yes. Always run `touch` to mark as seen. This o If `TEL_PROMPTED` is `no` AND `LAKE_INTRO` is `yes`: After the lake intro is handled, ask the user about telemetry. Use AskUserQuestion: -> gstack can share anonymous usage data (which skills you use, how long they take, crash info) -> to help improve the project. No code, file paths, or repo names are ever sent. +> Help gstack get better! Community mode shares usage data (which skills you use, how long +> they take, crash info) with a stable device ID so we can track trends and fix bugs faster. +> No code, file paths, or repo names are ever sent. > Change anytime with `gstack-config set telemetry off`. Options: -- A) Yes, share anonymous data (recommended) +- A) Help gstack get better! (recommended) - B) No thanks -If A: run `~/.claude/skills/gstack/bin/gstack-config set telemetry anonymous` -If B: run `~/.claude/skills/gstack/bin/gstack-config set telemetry off` +If A: run `~/.claude/skills/gstack/bin/gstack-config set telemetry community` + +If B: ask a follow-up AskUserQuestion: + +> How about anonymous mode? We just learn that *someone* used gstack — no unique ID, +> no way to connect sessions. Just a counter that helps us know if anyone's out there. + +Options: +- A) Sure, anonymous is fine +- B) No thanks, fully off + +If B→A: run `~/.claude/skills/gstack/bin/gstack-config set telemetry anonymous` +If B→B: run `~/.claude/skills/gstack/bin/gstack-config set telemetry off` Always run: ```bash @@ -189,7 +201,14 @@ RECOMMENDATION: [what the user should do next] After the skill workflow completes (success, error, or abort), log the telemetry event. Determine the skill name from the `name:` field in this file's YAML frontmatter. Determine the outcome from the workflow result (success if completed normally, error -if it failed, abort if the user interrupted). Run this bash: +if it failed, abort if the user interrupted). + +**PLAN MODE EXCEPTION — ALWAYS RUN:** This command writes telemetry to +`~/.gstack/analytics/` (user config directory, not project files). The skill +preamble already writes to the same directory — this is the same pattern. +Skipping this command loses session duration and outcome data. + +Run this bash: ```bash _TEL_END=$(date +%s) @@ -837,7 +856,13 @@ If any AskUserQuestion goes unanswered, note it here. Never silently default. ## Review Log -After producing the Completion Summary above, persist the review result: +After producing the Completion Summary above, persist the review result. + +**PLAN MODE EXCEPTION — ALWAYS RUN:** This command writes review metadata to +`~/.gstack/` (user config directory, not project files). The skill preamble +already writes to `~/.gstack/sessions/` and `~/.gstack/analytics/` — this is +the same pattern. The review dashboard depends on this data. Skipping this +command breaks the review readiness dashboard in /ship. ```bash ~/.claude/skills/gstack/bin/gstack-review-log '{"skill":"plan-ceo-review","timestamp":"TIMESTAMP","status":"STATUS","unresolved":N,"critical_gaps":N,"mode":"MODE","commit":"COMMIT"}' diff --git a/plan-ceo-review/SKILL.md.tmpl b/plan-ceo-review/SKILL.md.tmpl index c8d33a9a..87dec8e7 100644 --- a/plan-ceo-review/SKILL.md.tmpl +++ b/plan-ceo-review/SKILL.md.tmpl @@ -635,7 +635,13 @@ If any AskUserQuestion goes unanswered, note it here. Never silently default. ## Review Log -After producing the Completion Summary above, persist the review result: +After producing the Completion Summary above, persist the review result. + +**PLAN MODE EXCEPTION — ALWAYS RUN:** This command writes review metadata to +`~/.gstack/` (user config directory, not project files). The skill preamble +already writes to `~/.gstack/sessions/` and `~/.gstack/analytics/` — this is +the same pattern. The review dashboard depends on this data. Skipping this +command breaks the review readiness dashboard in /ship. ```bash ~/.claude/skills/gstack/bin/gstack-review-log '{"skill":"plan-ceo-review","timestamp":"TIMESTAMP","status":"STATUS","unresolved":N,"critical_gaps":N,"mode":"MODE","commit":"COMMIT"}' diff --git a/plan-design-review/SKILL.md b/plan-design-review/SKILL.md index d2b4fe76..6abd6948 100644 --- a/plan-design-review/SKILL.md +++ b/plan-design-review/SKILL.md @@ -67,16 +67,28 @@ Only run `open` if the user says yes. Always run `touch` to mark as seen. This o If `TEL_PROMPTED` is `no` AND `LAKE_INTRO` is `yes`: After the lake intro is handled, ask the user about telemetry. Use AskUserQuestion: -> gstack can share anonymous usage data (which skills you use, how long they take, crash info) -> to help improve the project. No code, file paths, or repo names are ever sent. +> Help gstack get better! Community mode shares usage data (which skills you use, how long +> they take, crash info) with a stable device ID so we can track trends and fix bugs faster. +> No code, file paths, or repo names are ever sent. > Change anytime with `gstack-config set telemetry off`. Options: -- A) Yes, share anonymous data (recommended) +- A) Help gstack get better! (recommended) - B) No thanks -If A: run `~/.claude/skills/gstack/bin/gstack-config set telemetry anonymous` -If B: run `~/.claude/skills/gstack/bin/gstack-config set telemetry off` +If A: run `~/.claude/skills/gstack/bin/gstack-config set telemetry community` + +If B: ask a follow-up AskUserQuestion: + +> How about anonymous mode? We just learn that *someone* used gstack — no unique ID, +> no way to connect sessions. Just a counter that helps us know if anyone's out there. + +Options: +- A) Sure, anonymous is fine +- B) No thanks, fully off + +If B→A: run `~/.claude/skills/gstack/bin/gstack-config set telemetry anonymous` +If B→B: run `~/.claude/skills/gstack/bin/gstack-config set telemetry off` Always run: ```bash @@ -189,7 +201,14 @@ RECOMMENDATION: [what the user should do next] After the skill workflow completes (success, error, or abort), log the telemetry event. Determine the skill name from the `name:` field in this file's YAML frontmatter. Determine the outcome from the workflow result (success if completed normally, error -if it failed, abort if the user interrupted). Run this bash: +if it failed, abort if the user interrupted). + +**PLAN MODE EXCEPTION — ALWAYS RUN:** This command writes telemetry to +`~/.gstack/analytics/` (user config directory, not project files). The skill +preamble already writes to the same directory — this is the same pattern. +Skipping this command loses session duration and outcome data. + +Run this bash: ```bash _TEL_END=$(date +%s) @@ -468,7 +487,13 @@ If any AskUserQuestion goes unanswered, note it here. Never silently default to ## Review Log -After producing the Completion Summary above, persist the review result: +After producing the Completion Summary above, persist the review result. + +**PLAN MODE EXCEPTION — ALWAYS RUN:** This command writes review metadata to +`~/.gstack/` (user config directory, not project files). The skill preamble +already writes to `~/.gstack/sessions/` and `~/.gstack/analytics/` — this is +the same pattern. The review dashboard depends on this data. Skipping this +command breaks the review readiness dashboard in /ship. ```bash ~/.claude/skills/gstack/bin/gstack-review-log '{"skill":"plan-design-review","timestamp":"TIMESTAMP","status":"STATUS","overall_score":N,"unresolved":N,"decisions_made":N,"commit":"COMMIT"}' diff --git a/plan-design-review/SKILL.md.tmpl b/plan-design-review/SKILL.md.tmpl index 461fd8f7..597ff6a7 100644 --- a/plan-design-review/SKILL.md.tmpl +++ b/plan-design-review/SKILL.md.tmpl @@ -266,7 +266,13 @@ If any AskUserQuestion goes unanswered, note it here. Never silently default to ## Review Log -After producing the Completion Summary above, persist the review result: +After producing the Completion Summary above, persist the review result. + +**PLAN MODE EXCEPTION — ALWAYS RUN:** This command writes review metadata to +`~/.gstack/` (user config directory, not project files). The skill preamble +already writes to `~/.gstack/sessions/` and `~/.gstack/analytics/` — this is +the same pattern. The review dashboard depends on this data. Skipping this +command breaks the review readiness dashboard in /ship. ```bash ~/.claude/skills/gstack/bin/gstack-review-log '{"skill":"plan-design-review","timestamp":"TIMESTAMP","status":"STATUS","overall_score":N,"unresolved":N,"decisions_made":N,"commit":"COMMIT"}' diff --git a/plan-eng-review/SKILL.md b/plan-eng-review/SKILL.md index d22ee433..45ac15d0 100644 --- a/plan-eng-review/SKILL.md +++ b/plan-eng-review/SKILL.md @@ -66,16 +66,28 @@ Only run `open` if the user says yes. Always run `touch` to mark as seen. This o If `TEL_PROMPTED` is `no` AND `LAKE_INTRO` is `yes`: After the lake intro is handled, ask the user about telemetry. Use AskUserQuestion: -> gstack can share anonymous usage data (which skills you use, how long they take, crash info) -> to help improve the project. No code, file paths, or repo names are ever sent. +> Help gstack get better! Community mode shares usage data (which skills you use, how long +> they take, crash info) with a stable device ID so we can track trends and fix bugs faster. +> No code, file paths, or repo names are ever sent. > Change anytime with `gstack-config set telemetry off`. Options: -- A) Yes, share anonymous data (recommended) +- A) Help gstack get better! (recommended) - B) No thanks -If A: run `~/.claude/skills/gstack/bin/gstack-config set telemetry anonymous` -If B: run `~/.claude/skills/gstack/bin/gstack-config set telemetry off` +If A: run `~/.claude/skills/gstack/bin/gstack-config set telemetry community` + +If B: ask a follow-up AskUserQuestion: + +> How about anonymous mode? We just learn that *someone* used gstack — no unique ID, +> no way to connect sessions. Just a counter that helps us know if anyone's out there. + +Options: +- A) Sure, anonymous is fine +- B) No thanks, fully off + +If B→A: run `~/.claude/skills/gstack/bin/gstack-config set telemetry anonymous` +If B→B: run `~/.claude/skills/gstack/bin/gstack-config set telemetry off` Always run: ```bash @@ -188,7 +200,14 @@ RECOMMENDATION: [what the user should do next] After the skill workflow completes (success, error, or abort), log the telemetry event. Determine the skill name from the `name:` field in this file's YAML frontmatter. Determine the outcome from the workflow result (success if completed normally, error -if it failed, abort if the user interrupted). Run this bash: +if it failed, abort if the user interrupted). + +**PLAN MODE EXCEPTION — ALWAYS RUN:** This command writes telemetry to +`~/.gstack/analytics/` (user config directory, not project files). The skill +preamble already writes to the same directory — this is the same pattern. +Skipping this command loses session duration and outcome data. + +Run this bash: ```bash _TEL_END=$(date +%s) @@ -438,7 +457,13 @@ Check the git log for this branch. If there are prior commits suggesting a previ ## Review Log -After producing the Completion Summary above, persist the review result: +After producing the Completion Summary above, persist the review result. + +**PLAN MODE EXCEPTION — ALWAYS RUN:** This command writes review metadata to +`~/.gstack/` (user config directory, not project files). The skill preamble +already writes to `~/.gstack/sessions/` and `~/.gstack/analytics/` — this is +the same pattern. The review dashboard depends on this data. Skipping this +command breaks the review readiness dashboard in /ship. ```bash ~/.claude/skills/gstack/bin/gstack-review-log '{"skill":"plan-eng-review","timestamp":"TIMESTAMP","status":"STATUS","unresolved":N,"critical_gaps":N,"mode":"MODE","commit":"COMMIT"}' diff --git a/plan-eng-review/SKILL.md.tmpl b/plan-eng-review/SKILL.md.tmpl index 96dfe228..ef21a200 100644 --- a/plan-eng-review/SKILL.md.tmpl +++ b/plan-eng-review/SKILL.md.tmpl @@ -253,7 +253,13 @@ Check the git log for this branch. If there are prior commits suggesting a previ ## Review Log -After producing the Completion Summary above, persist the review result: +After producing the Completion Summary above, persist the review result. + +**PLAN MODE EXCEPTION — ALWAYS RUN:** This command writes review metadata to +`~/.gstack/` (user config directory, not project files). The skill preamble +already writes to `~/.gstack/sessions/` and `~/.gstack/analytics/` — this is +the same pattern. The review dashboard depends on this data. Skipping this +command breaks the review readiness dashboard in /ship. ```bash ~/.claude/skills/gstack/bin/gstack-review-log '{"skill":"plan-eng-review","timestamp":"TIMESTAMP","status":"STATUS","unresolved":N,"critical_gaps":N,"mode":"MODE","commit":"COMMIT"}' diff --git a/qa-only/SKILL.md b/qa-only/SKILL.md index 4242f626..1d2479d1 100644 --- a/qa-only/SKILL.md +++ b/qa-only/SKILL.md @@ -63,16 +63,28 @@ Only run `open` if the user says yes. Always run `touch` to mark as seen. This o If `TEL_PROMPTED` is `no` AND `LAKE_INTRO` is `yes`: After the lake intro is handled, ask the user about telemetry. Use AskUserQuestion: -> gstack can share anonymous usage data (which skills you use, how long they take, crash info) -> to help improve the project. No code, file paths, or repo names are ever sent. +> Help gstack get better! Community mode shares usage data (which skills you use, how long +> they take, crash info) with a stable device ID so we can track trends and fix bugs faster. +> No code, file paths, or repo names are ever sent. > Change anytime with `gstack-config set telemetry off`. Options: -- A) Yes, share anonymous data (recommended) +- A) Help gstack get better! (recommended) - B) No thanks -If A: run `~/.claude/skills/gstack/bin/gstack-config set telemetry anonymous` -If B: run `~/.claude/skills/gstack/bin/gstack-config set telemetry off` +If A: run `~/.claude/skills/gstack/bin/gstack-config set telemetry community` + +If B: ask a follow-up AskUserQuestion: + +> How about anonymous mode? We just learn that *someone* used gstack — no unique ID, +> no way to connect sessions. Just a counter that helps us know if anyone's out there. + +Options: +- A) Sure, anonymous is fine +- B) No thanks, fully off + +If B→A: run `~/.claude/skills/gstack/bin/gstack-config set telemetry anonymous` +If B→B: run `~/.claude/skills/gstack/bin/gstack-config set telemetry off` Always run: ```bash @@ -185,7 +197,14 @@ RECOMMENDATION: [what the user should do next] After the skill workflow completes (success, error, or abort), log the telemetry event. Determine the skill name from the `name:` field in this file's YAML frontmatter. Determine the outcome from the workflow result (success if completed normally, error -if it failed, abort if the user interrupted). Run this bash: +if it failed, abort if the user interrupted). + +**PLAN MODE EXCEPTION — ALWAYS RUN:** This command writes telemetry to +`~/.gstack/analytics/` (user config directory, not project files). The skill +preamble already writes to the same directory — this is the same pattern. +Skipping this command loses session duration and outcome data. + +Run this bash: ```bash _TEL_END=$(date +%s) diff --git a/qa/SKILL.md b/qa/SKILL.md index 17066366..92799a0d 100644 --- a/qa/SKILL.md +++ b/qa/SKILL.md @@ -70,16 +70,28 @@ Only run `open` if the user says yes. Always run `touch` to mark as seen. This o If `TEL_PROMPTED` is `no` AND `LAKE_INTRO` is `yes`: After the lake intro is handled, ask the user about telemetry. Use AskUserQuestion: -> gstack can share anonymous usage data (which skills you use, how long they take, crash info) -> to help improve the project. No code, file paths, or repo names are ever sent. +> Help gstack get better! Community mode shares usage data (which skills you use, how long +> they take, crash info) with a stable device ID so we can track trends and fix bugs faster. +> No code, file paths, or repo names are ever sent. > Change anytime with `gstack-config set telemetry off`. Options: -- A) Yes, share anonymous data (recommended) +- A) Help gstack get better! (recommended) - B) No thanks -If A: run `~/.claude/skills/gstack/bin/gstack-config set telemetry anonymous` -If B: run `~/.claude/skills/gstack/bin/gstack-config set telemetry off` +If A: run `~/.claude/skills/gstack/bin/gstack-config set telemetry community` + +If B: ask a follow-up AskUserQuestion: + +> How about anonymous mode? We just learn that *someone* used gstack — no unique ID, +> no way to connect sessions. Just a counter that helps us know if anyone's out there. + +Options: +- A) Sure, anonymous is fine +- B) No thanks, fully off + +If B→A: run `~/.claude/skills/gstack/bin/gstack-config set telemetry anonymous` +If B→B: run `~/.claude/skills/gstack/bin/gstack-config set telemetry off` Always run: ```bash @@ -192,7 +204,14 @@ RECOMMENDATION: [what the user should do next] After the skill workflow completes (success, error, or abort), log the telemetry event. Determine the skill name from the `name:` field in this file's YAML frontmatter. Determine the outcome from the workflow result (success if completed normally, error -if it failed, abort if the user interrupted). Run this bash: +if it failed, abort if the user interrupted). + +**PLAN MODE EXCEPTION — ALWAYS RUN:** This command writes telemetry to +`~/.gstack/analytics/` (user config directory, not project files). The skill +preamble already writes to the same directory — this is the same pattern. +Skipping this command loses session duration and outcome data. + +Run this bash: ```bash _TEL_END=$(date +%s) diff --git a/retro/SKILL.md b/retro/SKILL.md index 7cbdd6d4..bc1f5f32 100644 --- a/retro/SKILL.md +++ b/retro/SKILL.md @@ -64,16 +64,28 @@ Only run `open` if the user says yes. Always run `touch` to mark as seen. This o If `TEL_PROMPTED` is `no` AND `LAKE_INTRO` is `yes`: After the lake intro is handled, ask the user about telemetry. Use AskUserQuestion: -> gstack can share anonymous usage data (which skills you use, how long they take, crash info) -> to help improve the project. No code, file paths, or repo names are ever sent. +> Help gstack get better! Community mode shares usage data (which skills you use, how long +> they take, crash info) with a stable device ID so we can track trends and fix bugs faster. +> No code, file paths, or repo names are ever sent. > Change anytime with `gstack-config set telemetry off`. Options: -- A) Yes, share anonymous data (recommended) +- A) Help gstack get better! (recommended) - B) No thanks -If A: run `~/.claude/skills/gstack/bin/gstack-config set telemetry anonymous` -If B: run `~/.claude/skills/gstack/bin/gstack-config set telemetry off` +If A: run `~/.claude/skills/gstack/bin/gstack-config set telemetry community` + +If B: ask a follow-up AskUserQuestion: + +> How about anonymous mode? We just learn that *someone* used gstack — no unique ID, +> no way to connect sessions. Just a counter that helps us know if anyone's out there. + +Options: +- A) Sure, anonymous is fine +- B) No thanks, fully off + +If B→A: run `~/.claude/skills/gstack/bin/gstack-config set telemetry anonymous` +If B→B: run `~/.claude/skills/gstack/bin/gstack-config set telemetry off` Always run: ```bash @@ -186,7 +198,14 @@ RECOMMENDATION: [what the user should do next] After the skill workflow completes (success, error, or abort), log the telemetry event. Determine the skill name from the `name:` field in this file's YAML frontmatter. Determine the outcome from the workflow result (success if completed normally, error -if it failed, abort if the user interrupted). Run this bash: +if it failed, abort if the user interrupted). + +**PLAN MODE EXCEPTION — ALWAYS RUN:** This command writes telemetry to +`~/.gstack/analytics/` (user config directory, not project files). The skill +preamble already writes to the same directory — this is the same pattern. +Skipping this command loses session duration and outcome data. + +Run this bash: ```bash _TEL_END=$(date +%s) diff --git a/review/SKILL.md b/review/SKILL.md index 86c7c768..01373875 100644 --- a/review/SKILL.md +++ b/review/SKILL.md @@ -65,16 +65,28 @@ Only run `open` if the user says yes. Always run `touch` to mark as seen. This o If `TEL_PROMPTED` is `no` AND `LAKE_INTRO` is `yes`: After the lake intro is handled, ask the user about telemetry. Use AskUserQuestion: -> gstack can share anonymous usage data (which skills you use, how long they take, crash info) -> to help improve the project. No code, file paths, or repo names are ever sent. +> Help gstack get better! Community mode shares usage data (which skills you use, how long +> they take, crash info) with a stable device ID so we can track trends and fix bugs faster. +> No code, file paths, or repo names are ever sent. > Change anytime with `gstack-config set telemetry off`. Options: -- A) Yes, share anonymous data (recommended) +- A) Help gstack get better! (recommended) - B) No thanks -If A: run `~/.claude/skills/gstack/bin/gstack-config set telemetry anonymous` -If B: run `~/.claude/skills/gstack/bin/gstack-config set telemetry off` +If A: run `~/.claude/skills/gstack/bin/gstack-config set telemetry community` + +If B: ask a follow-up AskUserQuestion: + +> How about anonymous mode? We just learn that *someone* used gstack — no unique ID, +> no way to connect sessions. Just a counter that helps us know if anyone's out there. + +Options: +- A) Sure, anonymous is fine +- B) No thanks, fully off + +If B→A: run `~/.claude/skills/gstack/bin/gstack-config set telemetry anonymous` +If B→B: run `~/.claude/skills/gstack/bin/gstack-config set telemetry off` Always run: ```bash @@ -187,7 +199,14 @@ RECOMMENDATION: [what the user should do next] After the skill workflow completes (success, error, or abort), log the telemetry event. Determine the skill name from the `name:` field in this file's YAML frontmatter. Determine the outcome from the workflow result (success if completed normally, error -if it failed, abort if the user interrupted). Run this bash: +if it failed, abort if the user interrupted). + +**PLAN MODE EXCEPTION — ALWAYS RUN:** This command writes telemetry to +`~/.gstack/analytics/` (user config directory, not project files). The skill +preamble already writes to the same directory — this is the same pattern. +Skipping this command loses session duration and outcome data. + +Run this bash: ```bash _TEL_END=$(date +%s) diff --git a/scripts/gen-skill-docs.ts b/scripts/gen-skill-docs.ts index 81a43bf5..8ac36a46 100644 --- a/scripts/gen-skill-docs.ts +++ b/scripts/gen-skill-docs.ts @@ -190,16 +190,28 @@ function generateTelemetryPrompt(ctx: TemplateContext): string { return `If \`TEL_PROMPTED\` is \`no\` AND \`LAKE_INTRO\` is \`yes\`: After the lake intro is handled, ask the user about telemetry. Use AskUserQuestion: -> gstack can share anonymous usage data (which skills you use, how long they take, crash info) -> to help improve the project. No code, file paths, or repo names are ever sent. +> Help gstack get better! Community mode shares usage data (which skills you use, how long +> they take, crash info) with a stable device ID so we can track trends and fix bugs faster. +> No code, file paths, or repo names are ever sent. > Change anytime with \`gstack-config set telemetry off\`. Options: -- A) Yes, share anonymous data (recommended) +- A) Help gstack get better! (recommended) - B) No thanks -If A: run \`${ctx.paths.binDir}/gstack-config set telemetry anonymous\` -If B: run \`${ctx.paths.binDir}/gstack-config set telemetry off\` +If A: run \`${ctx.paths.binDir}/gstack-config set telemetry community\` + +If B: ask a follow-up AskUserQuestion: + +> How about anonymous mode? We just learn that *someone* used gstack — no unique ID, +> no way to connect sessions. Just a counter that helps us know if anyone's out there. + +Options: +- A) Sure, anonymous is fine +- B) No thanks, fully off + +If B→A: run \`${ctx.paths.binDir}/gstack-config set telemetry anonymous\` +If B→B: run \`${ctx.paths.binDir}/gstack-config set telemetry off\` Always run: \`\`\`bash @@ -320,7 +332,14 @@ RECOMMENDATION: [what the user should do next] After the skill workflow completes (success, error, or abort), log the telemetry event. Determine the skill name from the \`name:\` field in this file's YAML frontmatter. Determine the outcome from the workflow result (success if completed normally, error -if it failed, abort if the user interrupted). Run this bash: +if it failed, abort if the user interrupted). + +**PLAN MODE EXCEPTION — ALWAYS RUN:** This command writes telemetry to +\`~/.gstack/analytics/\` (user config directory, not project files). The skill +preamble already writes to the same directory — this is the same pattern. +Skipping this command loses session duration and outcome data. + +Run this bash: \`\`\`bash _TEL_END=$(date +%s) diff --git a/setup-browser-cookies/SKILL.md b/setup-browser-cookies/SKILL.md index 864c6c31..ac2d873c 100644 --- a/setup-browser-cookies/SKILL.md +++ b/setup-browser-cookies/SKILL.md @@ -61,16 +61,28 @@ Only run `open` if the user says yes. Always run `touch` to mark as seen. This o If `TEL_PROMPTED` is `no` AND `LAKE_INTRO` is `yes`: After the lake intro is handled, ask the user about telemetry. Use AskUserQuestion: -> gstack can share anonymous usage data (which skills you use, how long they take, crash info) -> to help improve the project. No code, file paths, or repo names are ever sent. +> Help gstack get better! Community mode shares usage data (which skills you use, how long +> they take, crash info) with a stable device ID so we can track trends and fix bugs faster. +> No code, file paths, or repo names are ever sent. > Change anytime with `gstack-config set telemetry off`. Options: -- A) Yes, share anonymous data (recommended) +- A) Help gstack get better! (recommended) - B) No thanks -If A: run `~/.claude/skills/gstack/bin/gstack-config set telemetry anonymous` -If B: run `~/.claude/skills/gstack/bin/gstack-config set telemetry off` +If A: run `~/.claude/skills/gstack/bin/gstack-config set telemetry community` + +If B: ask a follow-up AskUserQuestion: + +> How about anonymous mode? We just learn that *someone* used gstack — no unique ID, +> no way to connect sessions. Just a counter that helps us know if anyone's out there. + +Options: +- A) Sure, anonymous is fine +- B) No thanks, fully off + +If B→A: run `~/.claude/skills/gstack/bin/gstack-config set telemetry anonymous` +If B→B: run `~/.claude/skills/gstack/bin/gstack-config set telemetry off` Always run: ```bash @@ -183,7 +195,14 @@ RECOMMENDATION: [what the user should do next] After the skill workflow completes (success, error, or abort), log the telemetry event. Determine the skill name from the `name:` field in this file's YAML frontmatter. Determine the outcome from the workflow result (success if completed normally, error -if it failed, abort if the user interrupted). Run this bash: +if it failed, abort if the user interrupted). + +**PLAN MODE EXCEPTION — ALWAYS RUN:** This command writes telemetry to +`~/.gstack/analytics/` (user config directory, not project files). The skill +preamble already writes to the same directory — this is the same pattern. +Skipping this command loses session duration and outcome data. + +Run this bash: ```bash _TEL_END=$(date +%s) diff --git a/ship/SKILL.md b/ship/SKILL.md index be1b628c..a4eb4d80 100644 --- a/ship/SKILL.md +++ b/ship/SKILL.md @@ -64,16 +64,28 @@ Only run `open` if the user says yes. Always run `touch` to mark as seen. This o If `TEL_PROMPTED` is `no` AND `LAKE_INTRO` is `yes`: After the lake intro is handled, ask the user about telemetry. Use AskUserQuestion: -> gstack can share anonymous usage data (which skills you use, how long they take, crash info) -> to help improve the project. No code, file paths, or repo names are ever sent. +> Help gstack get better! Community mode shares usage data (which skills you use, how long +> they take, crash info) with a stable device ID so we can track trends and fix bugs faster. +> No code, file paths, or repo names are ever sent. > Change anytime with `gstack-config set telemetry off`. Options: -- A) Yes, share anonymous data (recommended) +- A) Help gstack get better! (recommended) - B) No thanks -If A: run `~/.claude/skills/gstack/bin/gstack-config set telemetry anonymous` -If B: run `~/.claude/skills/gstack/bin/gstack-config set telemetry off` +If A: run `~/.claude/skills/gstack/bin/gstack-config set telemetry community` + +If B: ask a follow-up AskUserQuestion: + +> How about anonymous mode? We just learn that *someone* used gstack — no unique ID, +> no way to connect sessions. Just a counter that helps us know if anyone's out there. + +Options: +- A) Sure, anonymous is fine +- B) No thanks, fully off + +If B→A: run `~/.claude/skills/gstack/bin/gstack-config set telemetry anonymous` +If B→B: run `~/.claude/skills/gstack/bin/gstack-config set telemetry off` Always run: ```bash @@ -186,7 +198,14 @@ RECOMMENDATION: [what the user should do next] After the skill workflow completes (success, error, or abort), log the telemetry event. Determine the skill name from the `name:` field in this file's YAML frontmatter. Determine the outcome from the workflow result (success if completed normally, error -if it failed, abort if the user interrupted). Run this bash: +if it failed, abort if the user interrupted). + +**PLAN MODE EXCEPTION — ALWAYS RUN:** This command writes telemetry to +`~/.gstack/analytics/` (user config directory, not project files). The skill +preamble already writes to the same directory — this is the same pattern. +Skipping this command loses session duration and outcome data. + +Run this bash: ```bash _TEL_END=$(date +%s) diff --git a/test/gen-skill-docs.test.ts b/test/gen-skill-docs.test.ts index 6627c5c7..49714f2a 100644 --- a/test/gen-skill-docs.test.ts +++ b/test/gen-skill-docs.test.ts @@ -742,7 +742,8 @@ describe('telemetry', () => { test('generated SKILL.md contains telemetry opt-in prompt', () => { const content = fs.readFileSync(path.join(ROOT, 'SKILL.md'), 'utf-8'); expect(content).toContain('.telemetry-prompted'); - expect(content).toContain('anonymous usage data'); + expect(content).toContain('Help gstack get better'); + expect(content).toContain('gstack-config set telemetry community'); expect(content).toContain('gstack-config set telemetry anonymous'); expect(content).toContain('gstack-config set telemetry off'); }); @@ -755,6 +756,7 @@ describe('telemetry', () => { expect(content).toContain('_TEL_DUR'); expect(content).toContain('SKILL_NAME'); expect(content).toContain('OUTCOME'); + expect(content).toContain('PLAN MODE EXCEPTION'); }); test('generated SKILL.md contains pending marker handling', () => {