From 6c2e9a70a08352a746b6af1ba43b2772e5b045da Mon Sep 17 00:00:00 2001 From: garrytan Date: Sat, 3 Oct 2026 02:34:00 +0000 Subject: [PATCH] chore: regenerate plan-tune, office-hours, retro --- office-hours/SKILL.md | 2 +- plan-tune/SKILL.md | 14 +++++++------- retro/SKILL.md | 6 +++--- test/fixtures/context-budget.json | 6 +++--- 4 files changed, 14 insertions(+), 14 deletions(-) diff --git a/office-hours/SKILL.md b/office-hours/SKILL.md index 2d6b8ae39..2073e8094 100644 --- a/office-hours/SKILL.md +++ b/office-hours/SKILL.md @@ -1208,7 +1208,7 @@ Count the signals. You'll use this count in Phase 6 to determine which tier of c After counting signals, append a session entry to the builder profile. This is the single source of truth for all closing state (tier, resource dedup, journey tracking). The `gstack-developer-profile --log-session` binary handles its own directory creation -and writes via atomic mktemp+mv to `~/.gstack/developer-profile.json`. +and writes via atomic mktemp+mv to `$GSTACK_STATE_ROOT/developer-profile.json`. Append one JSON line with these fields (substitute actual values from this session): - `date`: current ISO 8601 timestamp diff --git a/plan-tune/SKILL.md b/plan-tune/SKILL.md index 1159ef68b..6c351e200 100644 --- a/plan-tune/SKILL.md +++ b/plan-tune/SKILL.md @@ -412,11 +412,11 @@ and so accumulated free-text answers get dream-cycled into actionable proposals. Each gate is guarded by a marker so the user is prompted at most once per choice. 1. **Consent gate.** If `question_tuning` is `false` AND - `~/.gstack/.question-tuning-prompted` is missing → run `Consent + opt-in` + `$GSTACK_STATE_ROOT/.question-tuning-prompted` is missing → run `Consent + opt-in` below. Honor the answer with a marker write either way; do not re-prompt. 2. **Setup gate.** If `question_tuning` is `true` AND - `~/.gstack/developer-profile.json`'s `declared` object is empty AND - `~/.gstack/.declared-setup-prompted` is missing → run `5-Q setup` below. + `$GSTACK_STATE_ROOT/developer-profile.json`'s `declared` object is empty AND + `$GSTACK_STATE_ROOT/.declared-setup-prompted` is missing → run `5-Q setup` below. Touch the marker after setup completes OR is declined. 3. **Dream-cycle gate.** If `$GSTACK_STATE_ROOT/projects//distillation-proposals.json` exists AND has @@ -438,7 +438,7 @@ When no implicit gate fires, route by user intent: 9. **"Dream cycle" / "distill" / "what have I been free-texting"** → run `Dream cycle distill` below (triggers `gstack-distill-free-text`). 10. **"Turn it off" / "disable"** → `~/.claude/skills/gstack/bin/gstack-config set question_tuning false` -11. **"Turn it on" / "enable"** → `~/.claude/skills/gstack/bin/gstack-config set question_tuning true && touch ~/.gstack/.question-tuning-prompted` +11. **"Turn it on" / "enable"** → `~/.claude/skills/gstack/bin/gstack-config set question_tuning true && eval "$(~/.claude/skills/gstack/bin/gstack-paths)"; : "${GSTACK_STATE_ROOT:?gstack-paths failed; reinstall with ./setup or /gstack-upgrade}"; touch "$GSTACK_STATE_ROOT"/.question-tuning-prompted` 12. **Clear ambiguity** — if you can't tell what the user wants, ask plainly: "Do you want to (a) see your profile, (b) review recent questions, (c) set a preference, (d) update your declared profile, (e) run the dream cycle, @@ -453,7 +453,7 @@ Power-user shortcuts (one-word invocations) — handle these too: ## Consent + opt-in **When this fires.** Step 0's consent gate: `question_tuning` is `false` AND -`~/.gstack/.question-tuning-prompted` is missing. The user has never been +`$GSTACK_STATE_ROOT/.question-tuning-prompted` is missing. The user has never been asked. **Privacy note.** gstack defaults `question_tuning` to `false` for every user. @@ -527,7 +527,7 @@ explicit. - Right after the consent prompt above accepts option A. - Standalone via Step 0's setup gate: `question_tuning` is already `true` (user opted in via gstack-config or earlier `/plan-tune enable`) AND - `declared` is empty AND `~/.gstack/.declared-setup-prompted` is missing. + `declared` is empty AND `$GSTACK_STATE_ROOT/.declared-setup-prompted` is missing. This catches users who set `question_tuning: true` directly without running the wizard. @@ -563,7 +563,7 @@ explicit. After each answer, map A/B/C to the numeric value and save the declared dimension. Write each declaration directly into - `~/.gstack/developer-profile.json` under `declared.{dimension}`: + `$GSTACK_STATE_ROOT/developer-profile.json` under `declared.{dimension}`: ```bash # Ensure profile exists diff --git a/retro/SKILL.md b/retro/SKILL.md index 141bea3cd..361a9bba2 100644 --- a/retro/SKILL.md +++ b/retro/SKILL.md @@ -586,8 +586,8 @@ Also check `RETRO_REF`: if it is not `origin/` (local-only repo, missin **Optional inputs** (Read each file the script marks `present`): -- `RETRO_CONTEXT: present` → Read `~/.gstack/retro-context.md`. It is user-authored and may contain meeting notes, calendar events, decisions, and other context that doesn't appear in git history. Incorporate it into the retro narrative where relevant. -- `GREPTILE_HISTORY: present` → Read `~/.gstack/greptile-history.md`. Filter entries to the retro window by date. Count by type: `fix`, `fp`, `already-fixed`. Signal ratio = `(fix + already-fixed) / (fix + already-fixed + fp)`. Skip unparseable lines silently; if no entries fall in the window, skip the Greptile metric row. +- `RETRO_CONTEXT: present` → Read the `retro-context.md` path that line printed. It is user-authored and may contain meeting notes, calendar events, decisions, and other context that doesn't appear in git history. Incorporate it into the retro narrative where relevant. +- `GREPTILE_HISTORY: present` → Read the `greptile-history.md` path that line printed. Filter entries to the retro window by date. Count by type: `fix`, `fp`, `already-fixed`. Signal ratio = `(fix + already-fixed) / (fix + already-fixed + fp)`. Skip unparseable lines silently; if no entries fall in the window, skip the Greptile metric row. - `TODOS_FILE: present` → Read `TODOS.md`. Compute: total open TODOs (exclude the `## Completed` section), P0/P1 count, P2 count, items completed this period (Completed entries dated within the window), items added this period (cross-reference `COMMIT:` lines that touched TODOS.md). - `SKILL_USAGE_LOG: present` → Read the path it prints (`$GSTACK_STATE_ROOT/analytics/skill-usage.jsonl`). Filter to the window by `ts`. Separate skill activations (no `event` field) from hook fires (`event: "hook_fire"`). Aggregate by skill name. - `EUREKA_LOG: present` → Read the path it prints (`$GSTACK_STATE_ROOT/analytics/eureka.jsonl`). Filter to the window by `ts`. For each eureka moment note the skill that flagged it, the branch, and a one-line summary of the insight. @@ -845,7 +845,7 @@ Use the Write tool to save the JSON file with this schema: } ``` -**Note:** Only include the `greptile` field if `~/.gstack/greptile-history.md` exists and has entries within the time window. Only include the `backlog` field if `TODOS.md` exists. Only include the `test_health` field if test files were found (`TEST_FILES_TOTAL` > 0). If any has no data, omit the field entirely. +**Note:** Only include the `greptile` field if `greptile-history.md` (the path `GREPTILE_HISTORY` printed) exists and has entries within the time window. Only include the `backlog` field if `TODOS.md` exists. Only include the `test_health` field if test files were found (`TEST_FILES_TOTAL` > 0). If any has no data, omit the field entirely. Include test health data in the JSON when test files exist: ```json diff --git a/test/fixtures/context-budget.json b/test/fixtures/context-budget.json index 8ba9f0336..dd8afee6a 100644 --- a/test/fixtures/context-budget.json +++ b/test/fixtures/context-budget.json @@ -37,7 +37,7 @@ "landing-report": 9301, "learn": 8996, "make-pdf": 5233, - "office-hours": 22624, + "office-hours": 22626, "open-gstack-browser": 4840, "openclaw/skills/gstack-openclaw-ceo-review": 2764, "openclaw/skills/gstack-openclaw-investigate": 1429, @@ -48,10 +48,10 @@ "plan-design-review": 20519, "plan-devex-review": 17906, "plan-eng-review": 13521, - "plan-tune": 14734, + "plan-tune": 14789, "qa": 13570, "qa-only": 11742, - "retro": 19038, + "retro": 19055, "review": 19562, "scrape": 6876, "setup-browser-cookies": 3497,