mirror of https://github.com/garrytan/gstack.git
fix: plan mode exception for review log + telemetry writes (v0.9.0.1) (#234)
* fix: plan mode exception for review log + telemetry writes Add explicit plan-mode exception notes to review log sections in all 3 plan review skill templates and the telemetry section in gen-skill-docs.ts. When Claude runs in plan mode, it self-censors bash writes — but review logging and telemetry write to ~/.gstack/ (user metadata, not project files). The preamble already writes to the same directory successfully. The exception note gives Claude a reasoning chain: safety argument, precedent, and consequence of skipping. * chore: regenerate Codex/agents SKILL.md files with plan-mode exception * chore: bump version and changelog (v0.9.0.1) Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * feat: community-first telemetry opt-in with anonymous fallback Default opt-in is now "Help gstack get better!" (community mode with stable device ID). If declined, offers anonymous mode as a softer alternative before fully off. * chore: regenerate SKILL.md files with community-first telemetry prompt --------- Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
parent
8ddfab233d
commit
91bea06675
|
|
@ -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,
|
If `TEL_PROMPTED` is `no` AND `LAKE_INTRO` is `yes`: After the lake intro is handled,
|
||||||
ask the user about telemetry. Use AskUserQuestion:
|
ask the user about telemetry. Use AskUserQuestion:
|
||||||
|
|
||||||
> gstack can share anonymous usage data (which skills you use, how long they take, crash info)
|
> Help gstack get better! Community mode shares usage data (which skills you use, how long
|
||||||
> to help improve the project. No code, file paths, or repo names are ever sent.
|
> 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`.
|
> Change anytime with `gstack-config set telemetry off`.
|
||||||
|
|
||||||
Options:
|
Options:
|
||||||
- A) Yes, share anonymous data (recommended)
|
- A) Help gstack get better! (recommended)
|
||||||
- B) No thanks
|
- B) No thanks
|
||||||
|
|
||||||
If A: run `~/.codex/skills/gstack/bin/gstack-config set telemetry anonymous`
|
If A: run `~/.codex/skills/gstack/bin/gstack-config set telemetry community`
|
||||||
If B: run `~/.codex/skills/gstack/bin/gstack-config set telemetry off`
|
|
||||||
|
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:
|
Always run:
|
||||||
```bash
|
```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.
|
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 skill name from the `name:` field in this file's YAML frontmatter.
|
||||||
Determine the outcome from the workflow result (success if completed normally, error
|
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
|
```bash
|
||||||
_TEL_END=$(date +%s)
|
_TEL_END=$(date +%s)
|
||||||
|
|
|
||||||
|
|
@ -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,
|
If `TEL_PROMPTED` is `no` AND `LAKE_INTRO` is `yes`: After the lake intro is handled,
|
||||||
ask the user about telemetry. Use AskUserQuestion:
|
ask the user about telemetry. Use AskUserQuestion:
|
||||||
|
|
||||||
> gstack can share anonymous usage data (which skills you use, how long they take, crash info)
|
> Help gstack get better! Community mode shares usage data (which skills you use, how long
|
||||||
> to help improve the project. No code, file paths, or repo names are ever sent.
|
> 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`.
|
> Change anytime with `gstack-config set telemetry off`.
|
||||||
|
|
||||||
Options:
|
Options:
|
||||||
- A) Yes, share anonymous data (recommended)
|
- A) Help gstack get better! (recommended)
|
||||||
- B) No thanks
|
- B) No thanks
|
||||||
|
|
||||||
If A: run `~/.codex/skills/gstack/bin/gstack-config set telemetry anonymous`
|
If A: run `~/.codex/skills/gstack/bin/gstack-config set telemetry community`
|
||||||
If B: run `~/.codex/skills/gstack/bin/gstack-config set telemetry off`
|
|
||||||
|
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:
|
Always run:
|
||||||
```bash
|
```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.
|
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 skill name from the `name:` field in this file's YAML frontmatter.
|
||||||
Determine the outcome from the workflow result (success if completed normally, error
|
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
|
```bash
|
||||||
_TEL_END=$(date +%s)
|
_TEL_END=$(date +%s)
|
||||||
|
|
|
||||||
|
|
@ -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,
|
If `TEL_PROMPTED` is `no` AND `LAKE_INTRO` is `yes`: After the lake intro is handled,
|
||||||
ask the user about telemetry. Use AskUserQuestion:
|
ask the user about telemetry. Use AskUserQuestion:
|
||||||
|
|
||||||
> gstack can share anonymous usage data (which skills you use, how long they take, crash info)
|
> Help gstack get better! Community mode shares usage data (which skills you use, how long
|
||||||
> to help improve the project. No code, file paths, or repo names are ever sent.
|
> 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`.
|
> Change anytime with `gstack-config set telemetry off`.
|
||||||
|
|
||||||
Options:
|
Options:
|
||||||
- A) Yes, share anonymous data (recommended)
|
- A) Help gstack get better! (recommended)
|
||||||
- B) No thanks
|
- B) No thanks
|
||||||
|
|
||||||
If A: run `~/.codex/skills/gstack/bin/gstack-config set telemetry anonymous`
|
If A: run `~/.codex/skills/gstack/bin/gstack-config set telemetry community`
|
||||||
If B: run `~/.codex/skills/gstack/bin/gstack-config set telemetry off`
|
|
||||||
|
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:
|
Always run:
|
||||||
```bash
|
```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.
|
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 skill name from the `name:` field in this file's YAML frontmatter.
|
||||||
Determine the outcome from the workflow result (success if completed normally, error
|
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
|
```bash
|
||||||
_TEL_END=$(date +%s)
|
_TEL_END=$(date +%s)
|
||||||
|
|
|
||||||
|
|
@ -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,
|
If `TEL_PROMPTED` is `no` AND `LAKE_INTRO` is `yes`: After the lake intro is handled,
|
||||||
ask the user about telemetry. Use AskUserQuestion:
|
ask the user about telemetry. Use AskUserQuestion:
|
||||||
|
|
||||||
> gstack can share anonymous usage data (which skills you use, how long they take, crash info)
|
> Help gstack get better! Community mode shares usage data (which skills you use, how long
|
||||||
> to help improve the project. No code, file paths, or repo names are ever sent.
|
> 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`.
|
> Change anytime with `gstack-config set telemetry off`.
|
||||||
|
|
||||||
Options:
|
Options:
|
||||||
- A) Yes, share anonymous data (recommended)
|
- A) Help gstack get better! (recommended)
|
||||||
- B) No thanks
|
- B) No thanks
|
||||||
|
|
||||||
If A: run `~/.codex/skills/gstack/bin/gstack-config set telemetry anonymous`
|
If A: run `~/.codex/skills/gstack/bin/gstack-config set telemetry community`
|
||||||
If B: run `~/.codex/skills/gstack/bin/gstack-config set telemetry off`
|
|
||||||
|
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:
|
Always run:
|
||||||
```bash
|
```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.
|
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 skill name from the `name:` field in this file's YAML frontmatter.
|
||||||
Determine the outcome from the workflow result (success if completed normally, error
|
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
|
```bash
|
||||||
_TEL_END=$(date +%s)
|
_TEL_END=$(date +%s)
|
||||||
|
|
|
||||||
|
|
@ -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,
|
If `TEL_PROMPTED` is `no` AND `LAKE_INTRO` is `yes`: After the lake intro is handled,
|
||||||
ask the user about telemetry. Use AskUserQuestion:
|
ask the user about telemetry. Use AskUserQuestion:
|
||||||
|
|
||||||
> gstack can share anonymous usage data (which skills you use, how long they take, crash info)
|
> Help gstack get better! Community mode shares usage data (which skills you use, how long
|
||||||
> to help improve the project. No code, file paths, or repo names are ever sent.
|
> 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`.
|
> Change anytime with `gstack-config set telemetry off`.
|
||||||
|
|
||||||
Options:
|
Options:
|
||||||
- A) Yes, share anonymous data (recommended)
|
- A) Help gstack get better! (recommended)
|
||||||
- B) No thanks
|
- B) No thanks
|
||||||
|
|
||||||
If A: run `~/.codex/skills/gstack/bin/gstack-config set telemetry anonymous`
|
If A: run `~/.codex/skills/gstack/bin/gstack-config set telemetry community`
|
||||||
If B: run `~/.codex/skills/gstack/bin/gstack-config set telemetry off`
|
|
||||||
|
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:
|
Always run:
|
||||||
```bash
|
```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.
|
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 skill name from the `name:` field in this file's YAML frontmatter.
|
||||||
Determine the outcome from the workflow result (success if completed normally, error
|
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
|
```bash
|
||||||
_TEL_END=$(date +%s)
|
_TEL_END=$(date +%s)
|
||||||
|
|
|
||||||
|
|
@ -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,
|
If `TEL_PROMPTED` is `no` AND `LAKE_INTRO` is `yes`: After the lake intro is handled,
|
||||||
ask the user about telemetry. Use AskUserQuestion:
|
ask the user about telemetry. Use AskUserQuestion:
|
||||||
|
|
||||||
> gstack can share anonymous usage data (which skills you use, how long they take, crash info)
|
> Help gstack get better! Community mode shares usage data (which skills you use, how long
|
||||||
> to help improve the project. No code, file paths, or repo names are ever sent.
|
> 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`.
|
> Change anytime with `gstack-config set telemetry off`.
|
||||||
|
|
||||||
Options:
|
Options:
|
||||||
- A) Yes, share anonymous data (recommended)
|
- A) Help gstack get better! (recommended)
|
||||||
- B) No thanks
|
- B) No thanks
|
||||||
|
|
||||||
If A: run `~/.codex/skills/gstack/bin/gstack-config set telemetry anonymous`
|
If A: run `~/.codex/skills/gstack/bin/gstack-config set telemetry community`
|
||||||
If B: run `~/.codex/skills/gstack/bin/gstack-config set telemetry off`
|
|
||||||
|
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:
|
Always run:
|
||||||
```bash
|
```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.
|
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 skill name from the `name:` field in this file's YAML frontmatter.
|
||||||
Determine the outcome from the workflow result (success if completed normally, error
|
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
|
```bash
|
||||||
_TEL_END=$(date +%s)
|
_TEL_END=$(date +%s)
|
||||||
|
|
|
||||||
|
|
@ -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,
|
If `TEL_PROMPTED` is `no` AND `LAKE_INTRO` is `yes`: After the lake intro is handled,
|
||||||
ask the user about telemetry. Use AskUserQuestion:
|
ask the user about telemetry. Use AskUserQuestion:
|
||||||
|
|
||||||
> gstack can share anonymous usage data (which skills you use, how long they take, crash info)
|
> Help gstack get better! Community mode shares usage data (which skills you use, how long
|
||||||
> to help improve the project. No code, file paths, or repo names are ever sent.
|
> 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`.
|
> Change anytime with `gstack-config set telemetry off`.
|
||||||
|
|
||||||
Options:
|
Options:
|
||||||
- A) Yes, share anonymous data (recommended)
|
- A) Help gstack get better! (recommended)
|
||||||
- B) No thanks
|
- B) No thanks
|
||||||
|
|
||||||
If A: run `~/.codex/skills/gstack/bin/gstack-config set telemetry anonymous`
|
If A: run `~/.codex/skills/gstack/bin/gstack-config set telemetry community`
|
||||||
If B: run `~/.codex/skills/gstack/bin/gstack-config set telemetry off`
|
|
||||||
|
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:
|
Always run:
|
||||||
```bash
|
```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.
|
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 skill name from the `name:` field in this file's YAML frontmatter.
|
||||||
Determine the outcome from the workflow result (success if completed normally, error
|
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
|
```bash
|
||||||
_TEL_END=$(date +%s)
|
_TEL_END=$(date +%s)
|
||||||
|
|
@ -830,7 +849,13 @@ If any AskUserQuestion goes unanswered, note it here. Never silently default.
|
||||||
|
|
||||||
## Review Log
|
## 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
|
```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"}'
|
~/.codex/skills/gstack/bin/gstack-review-log '{"skill":"plan-ceo-review","timestamp":"TIMESTAMP","status":"STATUS","unresolved":N,"critical_gaps":N,"mode":"MODE","commit":"COMMIT"}'
|
||||||
|
|
|
||||||
|
|
@ -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,
|
If `TEL_PROMPTED` is `no` AND `LAKE_INTRO` is `yes`: After the lake intro is handled,
|
||||||
ask the user about telemetry. Use AskUserQuestion:
|
ask the user about telemetry. Use AskUserQuestion:
|
||||||
|
|
||||||
> gstack can share anonymous usage data (which skills you use, how long they take, crash info)
|
> Help gstack get better! Community mode shares usage data (which skills you use, how long
|
||||||
> to help improve the project. No code, file paths, or repo names are ever sent.
|
> 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`.
|
> Change anytime with `gstack-config set telemetry off`.
|
||||||
|
|
||||||
Options:
|
Options:
|
||||||
- A) Yes, share anonymous data (recommended)
|
- A) Help gstack get better! (recommended)
|
||||||
- B) No thanks
|
- B) No thanks
|
||||||
|
|
||||||
If A: run `~/.codex/skills/gstack/bin/gstack-config set telemetry anonymous`
|
If A: run `~/.codex/skills/gstack/bin/gstack-config set telemetry community`
|
||||||
If B: run `~/.codex/skills/gstack/bin/gstack-config set telemetry off`
|
|
||||||
|
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:
|
Always run:
|
||||||
```bash
|
```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.
|
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 skill name from the `name:` field in this file's YAML frontmatter.
|
||||||
Determine the outcome from the workflow result (success if completed normally, error
|
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
|
```bash
|
||||||
_TEL_END=$(date +%s)
|
_TEL_END=$(date +%s)
|
||||||
|
|
@ -460,7 +479,13 @@ If any AskUserQuestion goes unanswered, note it here. Never silently default to
|
||||||
|
|
||||||
## Review Log
|
## 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
|
```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"}'
|
~/.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"}'
|
||||||
|
|
|
||||||
|
|
@ -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,
|
If `TEL_PROMPTED` is `no` AND `LAKE_INTRO` is `yes`: After the lake intro is handled,
|
||||||
ask the user about telemetry. Use AskUserQuestion:
|
ask the user about telemetry. Use AskUserQuestion:
|
||||||
|
|
||||||
> gstack can share anonymous usage data (which skills you use, how long they take, crash info)
|
> Help gstack get better! Community mode shares usage data (which skills you use, how long
|
||||||
> to help improve the project. No code, file paths, or repo names are ever sent.
|
> 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`.
|
> Change anytime with `gstack-config set telemetry off`.
|
||||||
|
|
||||||
Options:
|
Options:
|
||||||
- A) Yes, share anonymous data (recommended)
|
- A) Help gstack get better! (recommended)
|
||||||
- B) No thanks
|
- B) No thanks
|
||||||
|
|
||||||
If A: run `~/.codex/skills/gstack/bin/gstack-config set telemetry anonymous`
|
If A: run `~/.codex/skills/gstack/bin/gstack-config set telemetry community`
|
||||||
If B: run `~/.codex/skills/gstack/bin/gstack-config set telemetry off`
|
|
||||||
|
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:
|
Always run:
|
||||||
```bash
|
```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.
|
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 skill name from the `name:` field in this file's YAML frontmatter.
|
||||||
Determine the outcome from the workflow result (success if completed normally, error
|
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
|
```bash
|
||||||
_TEL_END=$(date +%s)
|
_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
|
## 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
|
```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"}'
|
~/.codex/skills/gstack/bin/gstack-review-log '{"skill":"plan-eng-review","timestamp":"TIMESTAMP","status":"STATUS","unresolved":N,"critical_gaps":N,"mode":"MODE","commit":"COMMIT"}'
|
||||||
|
|
|
||||||
|
|
@ -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,
|
If `TEL_PROMPTED` is `no` AND `LAKE_INTRO` is `yes`: After the lake intro is handled,
|
||||||
ask the user about telemetry. Use AskUserQuestion:
|
ask the user about telemetry. Use AskUserQuestion:
|
||||||
|
|
||||||
> gstack can share anonymous usage data (which skills you use, how long they take, crash info)
|
> Help gstack get better! Community mode shares usage data (which skills you use, how long
|
||||||
> to help improve the project. No code, file paths, or repo names are ever sent.
|
> 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`.
|
> Change anytime with `gstack-config set telemetry off`.
|
||||||
|
|
||||||
Options:
|
Options:
|
||||||
- A) Yes, share anonymous data (recommended)
|
- A) Help gstack get better! (recommended)
|
||||||
- B) No thanks
|
- B) No thanks
|
||||||
|
|
||||||
If A: run `~/.codex/skills/gstack/bin/gstack-config set telemetry anonymous`
|
If A: run `~/.codex/skills/gstack/bin/gstack-config set telemetry community`
|
||||||
If B: run `~/.codex/skills/gstack/bin/gstack-config set telemetry off`
|
|
||||||
|
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:
|
Always run:
|
||||||
```bash
|
```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.
|
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 skill name from the `name:` field in this file's YAML frontmatter.
|
||||||
Determine the outcome from the workflow result (success if completed normally, error
|
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
|
```bash
|
||||||
_TEL_END=$(date +%s)
|
_TEL_END=$(date +%s)
|
||||||
|
|
|
||||||
|
|
@ -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,
|
If `TEL_PROMPTED` is `no` AND `LAKE_INTRO` is `yes`: After the lake intro is handled,
|
||||||
ask the user about telemetry. Use AskUserQuestion:
|
ask the user about telemetry. Use AskUserQuestion:
|
||||||
|
|
||||||
> gstack can share anonymous usage data (which skills you use, how long they take, crash info)
|
> Help gstack get better! Community mode shares usage data (which skills you use, how long
|
||||||
> to help improve the project. No code, file paths, or repo names are ever sent.
|
> 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`.
|
> Change anytime with `gstack-config set telemetry off`.
|
||||||
|
|
||||||
Options:
|
Options:
|
||||||
- A) Yes, share anonymous data (recommended)
|
- A) Help gstack get better! (recommended)
|
||||||
- B) No thanks
|
- B) No thanks
|
||||||
|
|
||||||
If A: run `~/.codex/skills/gstack/bin/gstack-config set telemetry anonymous`
|
If A: run `~/.codex/skills/gstack/bin/gstack-config set telemetry community`
|
||||||
If B: run `~/.codex/skills/gstack/bin/gstack-config set telemetry off`
|
|
||||||
|
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:
|
Always run:
|
||||||
```bash
|
```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.
|
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 skill name from the `name:` field in this file's YAML frontmatter.
|
||||||
Determine the outcome from the workflow result (success if completed normally, error
|
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
|
```bash
|
||||||
_TEL_END=$(date +%s)
|
_TEL_END=$(date +%s)
|
||||||
|
|
|
||||||
|
|
@ -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,
|
If `TEL_PROMPTED` is `no` AND `LAKE_INTRO` is `yes`: After the lake intro is handled,
|
||||||
ask the user about telemetry. Use AskUserQuestion:
|
ask the user about telemetry. Use AskUserQuestion:
|
||||||
|
|
||||||
> gstack can share anonymous usage data (which skills you use, how long they take, crash info)
|
> Help gstack get better! Community mode shares usage data (which skills you use, how long
|
||||||
> to help improve the project. No code, file paths, or repo names are ever sent.
|
> 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`.
|
> Change anytime with `gstack-config set telemetry off`.
|
||||||
|
|
||||||
Options:
|
Options:
|
||||||
- A) Yes, share anonymous data (recommended)
|
- A) Help gstack get better! (recommended)
|
||||||
- B) No thanks
|
- B) No thanks
|
||||||
|
|
||||||
If A: run `~/.codex/skills/gstack/bin/gstack-config set telemetry anonymous`
|
If A: run `~/.codex/skills/gstack/bin/gstack-config set telemetry community`
|
||||||
If B: run `~/.codex/skills/gstack/bin/gstack-config set telemetry off`
|
|
||||||
|
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:
|
Always run:
|
||||||
```bash
|
```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.
|
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 skill name from the `name:` field in this file's YAML frontmatter.
|
||||||
Determine the outcome from the workflow result (success if completed normally, error
|
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
|
```bash
|
||||||
_TEL_END=$(date +%s)
|
_TEL_END=$(date +%s)
|
||||||
|
|
|
||||||
|
|
@ -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,
|
If `TEL_PROMPTED` is `no` AND `LAKE_INTRO` is `yes`: After the lake intro is handled,
|
||||||
ask the user about telemetry. Use AskUserQuestion:
|
ask the user about telemetry. Use AskUserQuestion:
|
||||||
|
|
||||||
> gstack can share anonymous usage data (which skills you use, how long they take, crash info)
|
> Help gstack get better! Community mode shares usage data (which skills you use, how long
|
||||||
> to help improve the project. No code, file paths, or repo names are ever sent.
|
> 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`.
|
> Change anytime with `gstack-config set telemetry off`.
|
||||||
|
|
||||||
Options:
|
Options:
|
||||||
- A) Yes, share anonymous data (recommended)
|
- A) Help gstack get better! (recommended)
|
||||||
- B) No thanks
|
- B) No thanks
|
||||||
|
|
||||||
If A: run `~/.codex/skills/gstack/bin/gstack-config set telemetry anonymous`
|
If A: run `~/.codex/skills/gstack/bin/gstack-config set telemetry community`
|
||||||
If B: run `~/.codex/skills/gstack/bin/gstack-config set telemetry off`
|
|
||||||
|
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:
|
Always run:
|
||||||
```bash
|
```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.
|
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 skill name from the `name:` field in this file's YAML frontmatter.
|
||||||
Determine the outcome from the workflow result (success if completed normally, error
|
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
|
```bash
|
||||||
_TEL_END=$(date +%s)
|
_TEL_END=$(date +%s)
|
||||||
|
|
|
||||||
|
|
@ -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,
|
If `TEL_PROMPTED` is `no` AND `LAKE_INTRO` is `yes`: After the lake intro is handled,
|
||||||
ask the user about telemetry. Use AskUserQuestion:
|
ask the user about telemetry. Use AskUserQuestion:
|
||||||
|
|
||||||
> gstack can share anonymous usage data (which skills you use, how long they take, crash info)
|
> Help gstack get better! Community mode shares usage data (which skills you use, how long
|
||||||
> to help improve the project. No code, file paths, or repo names are ever sent.
|
> 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`.
|
> Change anytime with `gstack-config set telemetry off`.
|
||||||
|
|
||||||
Options:
|
Options:
|
||||||
- A) Yes, share anonymous data (recommended)
|
- A) Help gstack get better! (recommended)
|
||||||
- B) No thanks
|
- B) No thanks
|
||||||
|
|
||||||
If A: run `~/.codex/skills/gstack/bin/gstack-config set telemetry anonymous`
|
If A: run `~/.codex/skills/gstack/bin/gstack-config set telemetry community`
|
||||||
If B: run `~/.codex/skills/gstack/bin/gstack-config set telemetry off`
|
|
||||||
|
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:
|
Always run:
|
||||||
```bash
|
```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.
|
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 skill name from the `name:` field in this file's YAML frontmatter.
|
||||||
Determine the outcome from the workflow result (success if completed normally, error
|
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
|
```bash
|
||||||
_TEL_END=$(date +%s)
|
_TEL_END=$(date +%s)
|
||||||
|
|
|
||||||
|
|
@ -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,
|
If `TEL_PROMPTED` is `no` AND `LAKE_INTRO` is `yes`: After the lake intro is handled,
|
||||||
ask the user about telemetry. Use AskUserQuestion:
|
ask the user about telemetry. Use AskUserQuestion:
|
||||||
|
|
||||||
> gstack can share anonymous usage data (which skills you use, how long they take, crash info)
|
> Help gstack get better! Community mode shares usage data (which skills you use, how long
|
||||||
> to help improve the project. No code, file paths, or repo names are ever sent.
|
> 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`.
|
> Change anytime with `gstack-config set telemetry off`.
|
||||||
|
|
||||||
Options:
|
Options:
|
||||||
- A) Yes, share anonymous data (recommended)
|
- A) Help gstack get better! (recommended)
|
||||||
- B) No thanks
|
- B) No thanks
|
||||||
|
|
||||||
If A: run `~/.codex/skills/gstack/bin/gstack-config set telemetry anonymous`
|
If A: run `~/.codex/skills/gstack/bin/gstack-config set telemetry community`
|
||||||
If B: run `~/.codex/skills/gstack/bin/gstack-config set telemetry off`
|
|
||||||
|
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:
|
Always run:
|
||||||
```bash
|
```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.
|
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 skill name from the `name:` field in this file's YAML frontmatter.
|
||||||
Determine the outcome from the workflow result (success if completed normally, error
|
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
|
```bash
|
||||||
_TEL_END=$(date +%s)
|
_TEL_END=$(date +%s)
|
||||||
|
|
|
||||||
|
|
@ -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,
|
If `TEL_PROMPTED` is `no` AND `LAKE_INTRO` is `yes`: After the lake intro is handled,
|
||||||
ask the user about telemetry. Use AskUserQuestion:
|
ask the user about telemetry. Use AskUserQuestion:
|
||||||
|
|
||||||
> gstack can share anonymous usage data (which skills you use, how long they take, crash info)
|
> Help gstack get better! Community mode shares usage data (which skills you use, how long
|
||||||
> to help improve the project. No code, file paths, or repo names are ever sent.
|
> 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`.
|
> Change anytime with `gstack-config set telemetry off`.
|
||||||
|
|
||||||
Options:
|
Options:
|
||||||
- A) Yes, share anonymous data (recommended)
|
- A) Help gstack get better! (recommended)
|
||||||
- B) No thanks
|
- B) No thanks
|
||||||
|
|
||||||
If A: run `~/.codex/skills/gstack/bin/gstack-config set telemetry anonymous`
|
If A: run `~/.codex/skills/gstack/bin/gstack-config set telemetry community`
|
||||||
If B: run `~/.codex/skills/gstack/bin/gstack-config set telemetry off`
|
|
||||||
|
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:
|
Always run:
|
||||||
```bash
|
```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.
|
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 skill name from the `name:` field in this file's YAML frontmatter.
|
||||||
Determine the outcome from the workflow result (success if completed normally, error
|
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
|
```bash
|
||||||
_TEL_END=$(date +%s)
|
_TEL_END=$(date +%s)
|
||||||
|
|
|
||||||
10
CHANGELOG.md
10
CHANGELOG.md
|
|
@ -1,5 +1,15 @@
|
||||||
# Changelog
|
# 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
|
## [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.
|
**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.
|
||||||
|
|
|
||||||
31
SKILL.md
31
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,
|
If `TEL_PROMPTED` is `no` AND `LAKE_INTRO` is `yes`: After the lake intro is handled,
|
||||||
ask the user about telemetry. Use AskUserQuestion:
|
ask the user about telemetry. Use AskUserQuestion:
|
||||||
|
|
||||||
> gstack can share anonymous usage data (which skills you use, how long they take, crash info)
|
> Help gstack get better! Community mode shares usage data (which skills you use, how long
|
||||||
> to help improve the project. No code, file paths, or repo names are ever sent.
|
> 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`.
|
> Change anytime with `gstack-config set telemetry off`.
|
||||||
|
|
||||||
Options:
|
Options:
|
||||||
- A) Yes, share anonymous data (recommended)
|
- A) Help gstack get better! (recommended)
|
||||||
- B) No thanks
|
- B) No thanks
|
||||||
|
|
||||||
If A: run `~/.claude/skills/gstack/bin/gstack-config set telemetry anonymous`
|
If A: run `~/.claude/skills/gstack/bin/gstack-config set telemetry community`
|
||||||
If B: run `~/.claude/skills/gstack/bin/gstack-config set telemetry off`
|
|
||||||
|
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:
|
Always run:
|
||||||
```bash
|
```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.
|
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 skill name from the `name:` field in this file's YAML frontmatter.
|
||||||
Determine the outcome from the workflow result (success if completed normally, error
|
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
|
```bash
|
||||||
_TEL_END=$(date +%s)
|
_TEL_END=$(date +%s)
|
||||||
|
|
|
||||||
|
|
@ -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,
|
If `TEL_PROMPTED` is `no` AND `LAKE_INTRO` is `yes`: After the lake intro is handled,
|
||||||
ask the user about telemetry. Use AskUserQuestion:
|
ask the user about telemetry. Use AskUserQuestion:
|
||||||
|
|
||||||
> gstack can share anonymous usage data (which skills you use, how long they take, crash info)
|
> Help gstack get better! Community mode shares usage data (which skills you use, how long
|
||||||
> to help improve the project. No code, file paths, or repo names are ever sent.
|
> 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`.
|
> Change anytime with `gstack-config set telemetry off`.
|
||||||
|
|
||||||
Options:
|
Options:
|
||||||
- A) Yes, share anonymous data (recommended)
|
- A) Help gstack get better! (recommended)
|
||||||
- B) No thanks
|
- B) No thanks
|
||||||
|
|
||||||
If A: run `~/.claude/skills/gstack/bin/gstack-config set telemetry anonymous`
|
If A: run `~/.claude/skills/gstack/bin/gstack-config set telemetry community`
|
||||||
If B: run `~/.claude/skills/gstack/bin/gstack-config set telemetry off`
|
|
||||||
|
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:
|
Always run:
|
||||||
```bash
|
```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.
|
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 skill name from the `name:` field in this file's YAML frontmatter.
|
||||||
Determine the outcome from the workflow result (success if completed normally, error
|
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
|
```bash
|
||||||
_TEL_END=$(date +%s)
|
_TEL_END=$(date +%s)
|
||||||
|
|
|
||||||
|
|
@ -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,
|
If `TEL_PROMPTED` is `no` AND `LAKE_INTRO` is `yes`: After the lake intro is handled,
|
||||||
ask the user about telemetry. Use AskUserQuestion:
|
ask the user about telemetry. Use AskUserQuestion:
|
||||||
|
|
||||||
> gstack can share anonymous usage data (which skills you use, how long they take, crash info)
|
> Help gstack get better! Community mode shares usage data (which skills you use, how long
|
||||||
> to help improve the project. No code, file paths, or repo names are ever sent.
|
> 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`.
|
> Change anytime with `gstack-config set telemetry off`.
|
||||||
|
|
||||||
Options:
|
Options:
|
||||||
- A) Yes, share anonymous data (recommended)
|
- A) Help gstack get better! (recommended)
|
||||||
- B) No thanks
|
- B) No thanks
|
||||||
|
|
||||||
If A: run `~/.claude/skills/gstack/bin/gstack-config set telemetry anonymous`
|
If A: run `~/.claude/skills/gstack/bin/gstack-config set telemetry community`
|
||||||
If B: run `~/.claude/skills/gstack/bin/gstack-config set telemetry off`
|
|
||||||
|
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:
|
Always run:
|
||||||
```bash
|
```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.
|
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 skill name from the `name:` field in this file's YAML frontmatter.
|
||||||
Determine the outcome from the workflow result (success if completed normally, error
|
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
|
```bash
|
||||||
_TEL_END=$(date +%s)
|
_TEL_END=$(date +%s)
|
||||||
|
|
|
||||||
|
|
@ -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,
|
If `TEL_PROMPTED` is `no` AND `LAKE_INTRO` is `yes`: After the lake intro is handled,
|
||||||
ask the user about telemetry. Use AskUserQuestion:
|
ask the user about telemetry. Use AskUserQuestion:
|
||||||
|
|
||||||
> gstack can share anonymous usage data (which skills you use, how long they take, crash info)
|
> Help gstack get better! Community mode shares usage data (which skills you use, how long
|
||||||
> to help improve the project. No code, file paths, or repo names are ever sent.
|
> 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`.
|
> Change anytime with `gstack-config set telemetry off`.
|
||||||
|
|
||||||
Options:
|
Options:
|
||||||
- A) Yes, share anonymous data (recommended)
|
- A) Help gstack get better! (recommended)
|
||||||
- B) No thanks
|
- B) No thanks
|
||||||
|
|
||||||
If A: run `~/.claude/skills/gstack/bin/gstack-config set telemetry anonymous`
|
If A: run `~/.claude/skills/gstack/bin/gstack-config set telemetry community`
|
||||||
If B: run `~/.claude/skills/gstack/bin/gstack-config set telemetry off`
|
|
||||||
|
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:
|
Always run:
|
||||||
```bash
|
```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.
|
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 skill name from the `name:` field in this file's YAML frontmatter.
|
||||||
Determine the outcome from the workflow result (success if completed normally, error
|
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
|
```bash
|
||||||
_TEL_END=$(date +%s)
|
_TEL_END=$(date +%s)
|
||||||
|
|
|
||||||
|
|
@ -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,
|
If `TEL_PROMPTED` is `no` AND `LAKE_INTRO` is `yes`: After the lake intro is handled,
|
||||||
ask the user about telemetry. Use AskUserQuestion:
|
ask the user about telemetry. Use AskUserQuestion:
|
||||||
|
|
||||||
> gstack can share anonymous usage data (which skills you use, how long they take, crash info)
|
> Help gstack get better! Community mode shares usage data (which skills you use, how long
|
||||||
> to help improve the project. No code, file paths, or repo names are ever sent.
|
> 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`.
|
> Change anytime with `gstack-config set telemetry off`.
|
||||||
|
|
||||||
Options:
|
Options:
|
||||||
- A) Yes, share anonymous data (recommended)
|
- A) Help gstack get better! (recommended)
|
||||||
- B) No thanks
|
- B) No thanks
|
||||||
|
|
||||||
If A: run `~/.claude/skills/gstack/bin/gstack-config set telemetry anonymous`
|
If A: run `~/.claude/skills/gstack/bin/gstack-config set telemetry community`
|
||||||
If B: run `~/.claude/skills/gstack/bin/gstack-config set telemetry off`
|
|
||||||
|
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:
|
Always run:
|
||||||
```bash
|
```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.
|
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 skill name from the `name:` field in this file's YAML frontmatter.
|
||||||
Determine the outcome from the workflow result (success if completed normally, error
|
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
|
```bash
|
||||||
_TEL_END=$(date +%s)
|
_TEL_END=$(date +%s)
|
||||||
|
|
|
||||||
|
|
@ -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,
|
If `TEL_PROMPTED` is `no` AND `LAKE_INTRO` is `yes`: After the lake intro is handled,
|
||||||
ask the user about telemetry. Use AskUserQuestion:
|
ask the user about telemetry. Use AskUserQuestion:
|
||||||
|
|
||||||
> gstack can share anonymous usage data (which skills you use, how long they take, crash info)
|
> Help gstack get better! Community mode shares usage data (which skills you use, how long
|
||||||
> to help improve the project. No code, file paths, or repo names are ever sent.
|
> 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`.
|
> Change anytime with `gstack-config set telemetry off`.
|
||||||
|
|
||||||
Options:
|
Options:
|
||||||
- A) Yes, share anonymous data (recommended)
|
- A) Help gstack get better! (recommended)
|
||||||
- B) No thanks
|
- B) No thanks
|
||||||
|
|
||||||
If A: run `~/.claude/skills/gstack/bin/gstack-config set telemetry anonymous`
|
If A: run `~/.claude/skills/gstack/bin/gstack-config set telemetry community`
|
||||||
If B: run `~/.claude/skills/gstack/bin/gstack-config set telemetry off`
|
|
||||||
|
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:
|
Always run:
|
||||||
```bash
|
```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.
|
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 skill name from the `name:` field in this file's YAML frontmatter.
|
||||||
Determine the outcome from the workflow result (success if completed normally, error
|
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
|
```bash
|
||||||
_TEL_END=$(date +%s)
|
_TEL_END=$(date +%s)
|
||||||
|
|
|
||||||
|
|
@ -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,
|
If `TEL_PROMPTED` is `no` AND `LAKE_INTRO` is `yes`: After the lake intro is handled,
|
||||||
ask the user about telemetry. Use AskUserQuestion:
|
ask the user about telemetry. Use AskUserQuestion:
|
||||||
|
|
||||||
> gstack can share anonymous usage data (which skills you use, how long they take, crash info)
|
> Help gstack get better! Community mode shares usage data (which skills you use, how long
|
||||||
> to help improve the project. No code, file paths, or repo names are ever sent.
|
> 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`.
|
> Change anytime with `gstack-config set telemetry off`.
|
||||||
|
|
||||||
Options:
|
Options:
|
||||||
- A) Yes, share anonymous data (recommended)
|
- A) Help gstack get better! (recommended)
|
||||||
- B) No thanks
|
- B) No thanks
|
||||||
|
|
||||||
If A: run `~/.claude/skills/gstack/bin/gstack-config set telemetry anonymous`
|
If A: run `~/.claude/skills/gstack/bin/gstack-config set telemetry community`
|
||||||
If B: run `~/.claude/skills/gstack/bin/gstack-config set telemetry off`
|
|
||||||
|
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:
|
Always run:
|
||||||
```bash
|
```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.
|
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 skill name from the `name:` field in this file's YAML frontmatter.
|
||||||
Determine the outcome from the workflow result (success if completed normally, error
|
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
|
```bash
|
||||||
_TEL_END=$(date +%s)
|
_TEL_END=$(date +%s)
|
||||||
|
|
|
||||||
|
|
@ -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,
|
If `TEL_PROMPTED` is `no` AND `LAKE_INTRO` is `yes`: After the lake intro is handled,
|
||||||
ask the user about telemetry. Use AskUserQuestion:
|
ask the user about telemetry. Use AskUserQuestion:
|
||||||
|
|
||||||
> gstack can share anonymous usage data (which skills you use, how long they take, crash info)
|
> Help gstack get better! Community mode shares usage data (which skills you use, how long
|
||||||
> to help improve the project. No code, file paths, or repo names are ever sent.
|
> 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`.
|
> Change anytime with `gstack-config set telemetry off`.
|
||||||
|
|
||||||
Options:
|
Options:
|
||||||
- A) Yes, share anonymous data (recommended)
|
- A) Help gstack get better! (recommended)
|
||||||
- B) No thanks
|
- B) No thanks
|
||||||
|
|
||||||
If A: run `~/.claude/skills/gstack/bin/gstack-config set telemetry anonymous`
|
If A: run `~/.claude/skills/gstack/bin/gstack-config set telemetry community`
|
||||||
If B: run `~/.claude/skills/gstack/bin/gstack-config set telemetry off`
|
|
||||||
|
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:
|
Always run:
|
||||||
```bash
|
```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.
|
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 skill name from the `name:` field in this file's YAML frontmatter.
|
||||||
Determine the outcome from the workflow result (success if completed normally, error
|
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
|
```bash
|
||||||
_TEL_END=$(date +%s)
|
_TEL_END=$(date +%s)
|
||||||
|
|
|
||||||
|
|
@ -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,
|
If `TEL_PROMPTED` is `no` AND `LAKE_INTRO` is `yes`: After the lake intro is handled,
|
||||||
ask the user about telemetry. Use AskUserQuestion:
|
ask the user about telemetry. Use AskUserQuestion:
|
||||||
|
|
||||||
> gstack can share anonymous usage data (which skills you use, how long they take, crash info)
|
> Help gstack get better! Community mode shares usage data (which skills you use, how long
|
||||||
> to help improve the project. No code, file paths, or repo names are ever sent.
|
> 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`.
|
> Change anytime with `gstack-config set telemetry off`.
|
||||||
|
|
||||||
Options:
|
Options:
|
||||||
- A) Yes, share anonymous data (recommended)
|
- A) Help gstack get better! (recommended)
|
||||||
- B) No thanks
|
- B) No thanks
|
||||||
|
|
||||||
If A: run `~/.claude/skills/gstack/bin/gstack-config set telemetry anonymous`
|
If A: run `~/.claude/skills/gstack/bin/gstack-config set telemetry community`
|
||||||
If B: run `~/.claude/skills/gstack/bin/gstack-config set telemetry off`
|
|
||||||
|
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:
|
Always run:
|
||||||
```bash
|
```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.
|
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 skill name from the `name:` field in this file's YAML frontmatter.
|
||||||
Determine the outcome from the workflow result (success if completed normally, error
|
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
|
```bash
|
||||||
_TEL_END=$(date +%s)
|
_TEL_END=$(date +%s)
|
||||||
|
|
@ -837,7 +856,13 @@ If any AskUserQuestion goes unanswered, note it here. Never silently default.
|
||||||
|
|
||||||
## Review Log
|
## 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
|
```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"}'
|
~/.claude/skills/gstack/bin/gstack-review-log '{"skill":"plan-ceo-review","timestamp":"TIMESTAMP","status":"STATUS","unresolved":N,"critical_gaps":N,"mode":"MODE","commit":"COMMIT"}'
|
||||||
|
|
|
||||||
|
|
@ -635,7 +635,13 @@ If any AskUserQuestion goes unanswered, note it here. Never silently default.
|
||||||
|
|
||||||
## Review Log
|
## 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
|
```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"}'
|
~/.claude/skills/gstack/bin/gstack-review-log '{"skill":"plan-ceo-review","timestamp":"TIMESTAMP","status":"STATUS","unresolved":N,"critical_gaps":N,"mode":"MODE","commit":"COMMIT"}'
|
||||||
|
|
|
||||||
|
|
@ -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,
|
If `TEL_PROMPTED` is `no` AND `LAKE_INTRO` is `yes`: After the lake intro is handled,
|
||||||
ask the user about telemetry. Use AskUserQuestion:
|
ask the user about telemetry. Use AskUserQuestion:
|
||||||
|
|
||||||
> gstack can share anonymous usage data (which skills you use, how long they take, crash info)
|
> Help gstack get better! Community mode shares usage data (which skills you use, how long
|
||||||
> to help improve the project. No code, file paths, or repo names are ever sent.
|
> 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`.
|
> Change anytime with `gstack-config set telemetry off`.
|
||||||
|
|
||||||
Options:
|
Options:
|
||||||
- A) Yes, share anonymous data (recommended)
|
- A) Help gstack get better! (recommended)
|
||||||
- B) No thanks
|
- B) No thanks
|
||||||
|
|
||||||
If A: run `~/.claude/skills/gstack/bin/gstack-config set telemetry anonymous`
|
If A: run `~/.claude/skills/gstack/bin/gstack-config set telemetry community`
|
||||||
If B: run `~/.claude/skills/gstack/bin/gstack-config set telemetry off`
|
|
||||||
|
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:
|
Always run:
|
||||||
```bash
|
```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.
|
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 skill name from the `name:` field in this file's YAML frontmatter.
|
||||||
Determine the outcome from the workflow result (success if completed normally, error
|
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
|
```bash
|
||||||
_TEL_END=$(date +%s)
|
_TEL_END=$(date +%s)
|
||||||
|
|
@ -468,7 +487,13 @@ If any AskUserQuestion goes unanswered, note it here. Never silently default to
|
||||||
|
|
||||||
## Review Log
|
## 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
|
```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"}'
|
~/.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"}'
|
||||||
|
|
|
||||||
|
|
@ -266,7 +266,13 @@ If any AskUserQuestion goes unanswered, note it here. Never silently default to
|
||||||
|
|
||||||
## Review Log
|
## 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
|
```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"}'
|
~/.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"}'
|
||||||
|
|
|
||||||
|
|
@ -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,
|
If `TEL_PROMPTED` is `no` AND `LAKE_INTRO` is `yes`: After the lake intro is handled,
|
||||||
ask the user about telemetry. Use AskUserQuestion:
|
ask the user about telemetry. Use AskUserQuestion:
|
||||||
|
|
||||||
> gstack can share anonymous usage data (which skills you use, how long they take, crash info)
|
> Help gstack get better! Community mode shares usage data (which skills you use, how long
|
||||||
> to help improve the project. No code, file paths, or repo names are ever sent.
|
> 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`.
|
> Change anytime with `gstack-config set telemetry off`.
|
||||||
|
|
||||||
Options:
|
Options:
|
||||||
- A) Yes, share anonymous data (recommended)
|
- A) Help gstack get better! (recommended)
|
||||||
- B) No thanks
|
- B) No thanks
|
||||||
|
|
||||||
If A: run `~/.claude/skills/gstack/bin/gstack-config set telemetry anonymous`
|
If A: run `~/.claude/skills/gstack/bin/gstack-config set telemetry community`
|
||||||
If B: run `~/.claude/skills/gstack/bin/gstack-config set telemetry off`
|
|
||||||
|
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:
|
Always run:
|
||||||
```bash
|
```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.
|
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 skill name from the `name:` field in this file's YAML frontmatter.
|
||||||
Determine the outcome from the workflow result (success if completed normally, error
|
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
|
```bash
|
||||||
_TEL_END=$(date +%s)
|
_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
|
## 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
|
```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"}'
|
~/.claude/skills/gstack/bin/gstack-review-log '{"skill":"plan-eng-review","timestamp":"TIMESTAMP","status":"STATUS","unresolved":N,"critical_gaps":N,"mode":"MODE","commit":"COMMIT"}'
|
||||||
|
|
|
||||||
|
|
@ -253,7 +253,13 @@ Check the git log for this branch. If there are prior commits suggesting a previ
|
||||||
|
|
||||||
## Review Log
|
## 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
|
```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"}'
|
~/.claude/skills/gstack/bin/gstack-review-log '{"skill":"plan-eng-review","timestamp":"TIMESTAMP","status":"STATUS","unresolved":N,"critical_gaps":N,"mode":"MODE","commit":"COMMIT"}'
|
||||||
|
|
|
||||||
|
|
@ -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,
|
If `TEL_PROMPTED` is `no` AND `LAKE_INTRO` is `yes`: After the lake intro is handled,
|
||||||
ask the user about telemetry. Use AskUserQuestion:
|
ask the user about telemetry. Use AskUserQuestion:
|
||||||
|
|
||||||
> gstack can share anonymous usage data (which skills you use, how long they take, crash info)
|
> Help gstack get better! Community mode shares usage data (which skills you use, how long
|
||||||
> to help improve the project. No code, file paths, or repo names are ever sent.
|
> 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`.
|
> Change anytime with `gstack-config set telemetry off`.
|
||||||
|
|
||||||
Options:
|
Options:
|
||||||
- A) Yes, share anonymous data (recommended)
|
- A) Help gstack get better! (recommended)
|
||||||
- B) No thanks
|
- B) No thanks
|
||||||
|
|
||||||
If A: run `~/.claude/skills/gstack/bin/gstack-config set telemetry anonymous`
|
If A: run `~/.claude/skills/gstack/bin/gstack-config set telemetry community`
|
||||||
If B: run `~/.claude/skills/gstack/bin/gstack-config set telemetry off`
|
|
||||||
|
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:
|
Always run:
|
||||||
```bash
|
```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.
|
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 skill name from the `name:` field in this file's YAML frontmatter.
|
||||||
Determine the outcome from the workflow result (success if completed normally, error
|
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
|
```bash
|
||||||
_TEL_END=$(date +%s)
|
_TEL_END=$(date +%s)
|
||||||
|
|
|
||||||
31
qa/SKILL.md
31
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,
|
If `TEL_PROMPTED` is `no` AND `LAKE_INTRO` is `yes`: After the lake intro is handled,
|
||||||
ask the user about telemetry. Use AskUserQuestion:
|
ask the user about telemetry. Use AskUserQuestion:
|
||||||
|
|
||||||
> gstack can share anonymous usage data (which skills you use, how long they take, crash info)
|
> Help gstack get better! Community mode shares usage data (which skills you use, how long
|
||||||
> to help improve the project. No code, file paths, or repo names are ever sent.
|
> 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`.
|
> Change anytime with `gstack-config set telemetry off`.
|
||||||
|
|
||||||
Options:
|
Options:
|
||||||
- A) Yes, share anonymous data (recommended)
|
- A) Help gstack get better! (recommended)
|
||||||
- B) No thanks
|
- B) No thanks
|
||||||
|
|
||||||
If A: run `~/.claude/skills/gstack/bin/gstack-config set telemetry anonymous`
|
If A: run `~/.claude/skills/gstack/bin/gstack-config set telemetry community`
|
||||||
If B: run `~/.claude/skills/gstack/bin/gstack-config set telemetry off`
|
|
||||||
|
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:
|
Always run:
|
||||||
```bash
|
```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.
|
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 skill name from the `name:` field in this file's YAML frontmatter.
|
||||||
Determine the outcome from the workflow result (success if completed normally, error
|
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
|
```bash
|
||||||
_TEL_END=$(date +%s)
|
_TEL_END=$(date +%s)
|
||||||
|
|
|
||||||
|
|
@ -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,
|
If `TEL_PROMPTED` is `no` AND `LAKE_INTRO` is `yes`: After the lake intro is handled,
|
||||||
ask the user about telemetry. Use AskUserQuestion:
|
ask the user about telemetry. Use AskUserQuestion:
|
||||||
|
|
||||||
> gstack can share anonymous usage data (which skills you use, how long they take, crash info)
|
> Help gstack get better! Community mode shares usage data (which skills you use, how long
|
||||||
> to help improve the project. No code, file paths, or repo names are ever sent.
|
> 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`.
|
> Change anytime with `gstack-config set telemetry off`.
|
||||||
|
|
||||||
Options:
|
Options:
|
||||||
- A) Yes, share anonymous data (recommended)
|
- A) Help gstack get better! (recommended)
|
||||||
- B) No thanks
|
- B) No thanks
|
||||||
|
|
||||||
If A: run `~/.claude/skills/gstack/bin/gstack-config set telemetry anonymous`
|
If A: run `~/.claude/skills/gstack/bin/gstack-config set telemetry community`
|
||||||
If B: run `~/.claude/skills/gstack/bin/gstack-config set telemetry off`
|
|
||||||
|
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:
|
Always run:
|
||||||
```bash
|
```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.
|
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 skill name from the `name:` field in this file's YAML frontmatter.
|
||||||
Determine the outcome from the workflow result (success if completed normally, error
|
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
|
```bash
|
||||||
_TEL_END=$(date +%s)
|
_TEL_END=$(date +%s)
|
||||||
|
|
|
||||||
|
|
@ -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,
|
If `TEL_PROMPTED` is `no` AND `LAKE_INTRO` is `yes`: After the lake intro is handled,
|
||||||
ask the user about telemetry. Use AskUserQuestion:
|
ask the user about telemetry. Use AskUserQuestion:
|
||||||
|
|
||||||
> gstack can share anonymous usage data (which skills you use, how long they take, crash info)
|
> Help gstack get better! Community mode shares usage data (which skills you use, how long
|
||||||
> to help improve the project. No code, file paths, or repo names are ever sent.
|
> 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`.
|
> Change anytime with `gstack-config set telemetry off`.
|
||||||
|
|
||||||
Options:
|
Options:
|
||||||
- A) Yes, share anonymous data (recommended)
|
- A) Help gstack get better! (recommended)
|
||||||
- B) No thanks
|
- B) No thanks
|
||||||
|
|
||||||
If A: run `~/.claude/skills/gstack/bin/gstack-config set telemetry anonymous`
|
If A: run `~/.claude/skills/gstack/bin/gstack-config set telemetry community`
|
||||||
If B: run `~/.claude/skills/gstack/bin/gstack-config set telemetry off`
|
|
||||||
|
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:
|
Always run:
|
||||||
```bash
|
```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.
|
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 skill name from the `name:` field in this file's YAML frontmatter.
|
||||||
Determine the outcome from the workflow result (success if completed normally, error
|
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
|
```bash
|
||||||
_TEL_END=$(date +%s)
|
_TEL_END=$(date +%s)
|
||||||
|
|
|
||||||
|
|
@ -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,
|
return `If \`TEL_PROMPTED\` is \`no\` AND \`LAKE_INTRO\` is \`yes\`: After the lake intro is handled,
|
||||||
ask the user about telemetry. Use AskUserQuestion:
|
ask the user about telemetry. Use AskUserQuestion:
|
||||||
|
|
||||||
> gstack can share anonymous usage data (which skills you use, how long they take, crash info)
|
> Help gstack get better! Community mode shares usage data (which skills you use, how long
|
||||||
> to help improve the project. No code, file paths, or repo names are ever sent.
|
> 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\`.
|
> Change anytime with \`gstack-config set telemetry off\`.
|
||||||
|
|
||||||
Options:
|
Options:
|
||||||
- A) Yes, share anonymous data (recommended)
|
- A) Help gstack get better! (recommended)
|
||||||
- B) No thanks
|
- B) No thanks
|
||||||
|
|
||||||
If A: run \`${ctx.paths.binDir}/gstack-config set telemetry anonymous\`
|
If A: run \`${ctx.paths.binDir}/gstack-config set telemetry community\`
|
||||||
If B: run \`${ctx.paths.binDir}/gstack-config set telemetry off\`
|
|
||||||
|
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:
|
Always run:
|
||||||
\`\`\`bash
|
\`\`\`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.
|
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 skill name from the \`name:\` field in this file's YAML frontmatter.
|
||||||
Determine the outcome from the workflow result (success if completed normally, error
|
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
|
\`\`\`bash
|
||||||
_TEL_END=$(date +%s)
|
_TEL_END=$(date +%s)
|
||||||
|
|
|
||||||
|
|
@ -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,
|
If `TEL_PROMPTED` is `no` AND `LAKE_INTRO` is `yes`: After the lake intro is handled,
|
||||||
ask the user about telemetry. Use AskUserQuestion:
|
ask the user about telemetry. Use AskUserQuestion:
|
||||||
|
|
||||||
> gstack can share anonymous usage data (which skills you use, how long they take, crash info)
|
> Help gstack get better! Community mode shares usage data (which skills you use, how long
|
||||||
> to help improve the project. No code, file paths, or repo names are ever sent.
|
> 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`.
|
> Change anytime with `gstack-config set telemetry off`.
|
||||||
|
|
||||||
Options:
|
Options:
|
||||||
- A) Yes, share anonymous data (recommended)
|
- A) Help gstack get better! (recommended)
|
||||||
- B) No thanks
|
- B) No thanks
|
||||||
|
|
||||||
If A: run `~/.claude/skills/gstack/bin/gstack-config set telemetry anonymous`
|
If A: run `~/.claude/skills/gstack/bin/gstack-config set telemetry community`
|
||||||
If B: run `~/.claude/skills/gstack/bin/gstack-config set telemetry off`
|
|
||||||
|
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:
|
Always run:
|
||||||
```bash
|
```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.
|
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 skill name from the `name:` field in this file's YAML frontmatter.
|
||||||
Determine the outcome from the workflow result (success if completed normally, error
|
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
|
```bash
|
||||||
_TEL_END=$(date +%s)
|
_TEL_END=$(date +%s)
|
||||||
|
|
|
||||||
|
|
@ -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,
|
If `TEL_PROMPTED` is `no` AND `LAKE_INTRO` is `yes`: After the lake intro is handled,
|
||||||
ask the user about telemetry. Use AskUserQuestion:
|
ask the user about telemetry. Use AskUserQuestion:
|
||||||
|
|
||||||
> gstack can share anonymous usage data (which skills you use, how long they take, crash info)
|
> Help gstack get better! Community mode shares usage data (which skills you use, how long
|
||||||
> to help improve the project. No code, file paths, or repo names are ever sent.
|
> 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`.
|
> Change anytime with `gstack-config set telemetry off`.
|
||||||
|
|
||||||
Options:
|
Options:
|
||||||
- A) Yes, share anonymous data (recommended)
|
- A) Help gstack get better! (recommended)
|
||||||
- B) No thanks
|
- B) No thanks
|
||||||
|
|
||||||
If A: run `~/.claude/skills/gstack/bin/gstack-config set telemetry anonymous`
|
If A: run `~/.claude/skills/gstack/bin/gstack-config set telemetry community`
|
||||||
If B: run `~/.claude/skills/gstack/bin/gstack-config set telemetry off`
|
|
||||||
|
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:
|
Always run:
|
||||||
```bash
|
```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.
|
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 skill name from the `name:` field in this file's YAML frontmatter.
|
||||||
Determine the outcome from the workflow result (success if completed normally, error
|
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
|
```bash
|
||||||
_TEL_END=$(date +%s)
|
_TEL_END=$(date +%s)
|
||||||
|
|
|
||||||
|
|
@ -742,7 +742,8 @@ describe('telemetry', () => {
|
||||||
test('generated SKILL.md contains telemetry opt-in prompt', () => {
|
test('generated SKILL.md contains telemetry opt-in prompt', () => {
|
||||||
const content = fs.readFileSync(path.join(ROOT, 'SKILL.md'), 'utf-8');
|
const content = fs.readFileSync(path.join(ROOT, 'SKILL.md'), 'utf-8');
|
||||||
expect(content).toContain('.telemetry-prompted');
|
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 anonymous');
|
||||||
expect(content).toContain('gstack-config set telemetry off');
|
expect(content).toContain('gstack-config set telemetry off');
|
||||||
});
|
});
|
||||||
|
|
@ -755,6 +756,7 @@ describe('telemetry', () => {
|
||||||
expect(content).toContain('_TEL_DUR');
|
expect(content).toContain('_TEL_DUR');
|
||||||
expect(content).toContain('SKILL_NAME');
|
expect(content).toContain('SKILL_NAME');
|
||||||
expect(content).toContain('OUTCOME');
|
expect(content).toContain('OUTCOME');
|
||||||
|
expect(content).toContain('PLAN MODE EXCEPTION');
|
||||||
});
|
});
|
||||||
|
|
||||||
test('generated SKILL.md contains pending marker handling', () => {
|
test('generated SKILL.md contains pending marker handling', () => {
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue