mirror of https://github.com/garrytan/gstack.git
refactor: remove dead contributor mode, replace with operational self-improvement slot
Contributor mode never fired in 18 days of heavy use (required manual opt-in via gstack-config, gated behind _CONTRIB=true, wrote disconnected markdown). Removes: generateContributorMode(), _CONTRIB bash var, 2 E2E tests, touchfile entry, doc references. Cleans up skip-lists in plan-ceo-review, autoplan, review resolver, and document-release templates. The operational self-improvement system (next commit) replaces this slot with automatic learning capture that requires no opt-in. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
parent
ae0a9ad195
commit
b6fcfd84b7
|
|
@ -217,7 +217,7 @@ Every skill starts with a `{{PREAMBLE}}` block that runs before the skill's own
|
||||||
|
|
||||||
1. **Update check** — calls `gstack-update-check`, reports if an upgrade is available.
|
1. **Update check** — calls `gstack-update-check`, reports if an upgrade is available.
|
||||||
2. **Session tracking** — touches `~/.gstack/sessions/$PPID` and counts active sessions (files modified in the last 2 hours). When 3+ sessions are running, all skills enter "ELI16 mode" — every question re-grounds the user on context because they're juggling windows.
|
2. **Session tracking** — touches `~/.gstack/sessions/$PPID` and counts active sessions (files modified in the last 2 hours). When 3+ sessions are running, all skills enter "ELI16 mode" — every question re-grounds the user on context because they're juggling windows.
|
||||||
3. **Contributor mode** — reads `gstack_contributor` from config. When true, the agent files casual field reports to `~/.gstack/contributor-logs/` when gstack itself misbehaves.
|
3. **Operational self-improvement** — at the end of every skill session, the agent reflects on failures (CLI errors, wrong approaches, project quirks) and logs operational learnings to the project's JSONL file for future sessions.
|
||||||
4. **AskUserQuestion format** — universal format: context, question, `RECOMMENDATION: Choose X because ___`, lettered options. Consistent across all skills.
|
4. **AskUserQuestion format** — universal format: context, question, `RECOMMENDATION: Choose X because ___`, lettered options. Consistent across all skills.
|
||||||
5. **Search Before Building** — before building infrastructure or unfamiliar patterns, search first. Three layers of knowledge: tried-and-true (Layer 1), new-and-popular (Layer 2), first-principles (Layer 3). When first-principles reasoning reveals conventional wisdom is wrong, the agent names the "eureka moment" and logs it. See `ETHOS.md` for the full builder philosophy.
|
5. **Search Before Building** — before building infrastructure or unfamiliar patterns, search first. Three layers of knowledge: tried-and-true (Layer 1), new-and-popular (Layer 2), first-principles (Layer 3). When first-principles reasoning reveals conventional wisdom is wrong, the agent names the "eureka moment" and logs it. See `ETHOS.md` for the full builder philosophy.
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -20,26 +20,19 @@ Now edit any `SKILL.md`, invoke it in Claude Code (e.g. `/review`), and see your
|
||||||
bin/dev-teardown # deactivate — back to your global install
|
bin/dev-teardown # deactivate — back to your global install
|
||||||
```
|
```
|
||||||
|
|
||||||
## Contributor mode
|
## Operational self-improvement
|
||||||
|
|
||||||
Contributor mode turns gstack into a self-improving tool. Enable it and Claude Code
|
gstack automatically learns from failures. At the end of every skill session, the agent
|
||||||
will periodically reflect on its gstack experience — rating it 0-10 at the end of
|
reflects on what went wrong (CLI errors, wrong approaches, project quirks) and logs
|
||||||
each major workflow step. When something isn't a 10, it thinks about why and files
|
operational learnings to `~/.gstack/projects/{slug}/learnings.jsonl`. Future sessions
|
||||||
a report to `~/.gstack/contributor-logs/` with what happened, repro steps, and what
|
surface these learnings automatically, so gstack gets smarter on your codebase over time.
|
||||||
would make it better.
|
|
||||||
|
|
||||||
```bash
|
No setup needed. Learnings are logged automatically. View them with `/learn`.
|
||||||
~/.claude/skills/gstack/bin/gstack-config set gstack_contributor true
|
|
||||||
```
|
|
||||||
|
|
||||||
The logs are for **you**. When something bugs you enough to fix, the report is
|
|
||||||
already written. Fork gstack, symlink your fork into the project where you hit
|
|
||||||
the issue, fix it, and open a PR.
|
|
||||||
|
|
||||||
### The contributor workflow
|
### The contributor workflow
|
||||||
|
|
||||||
1. **Use gstack normally** — contributor mode reflects and logs issues automatically
|
1. **Use gstack normally** — operational learnings are captured automatically
|
||||||
2. **Check your logs:** `ls ~/.gstack/contributor-logs/`
|
2. **Check your learnings:** `/learn` or `ls ~/.gstack/projects/*/learnings.jsonl`
|
||||||
3. **Fork and clone gstack** (if you haven't already)
|
3. **Fork and clone gstack** (if you haven't already)
|
||||||
4. **Symlink your fork into the project where you hit the bug:**
|
4. **Symlink your fork into the project where you hit the bug:**
|
||||||
```bash
|
```bash
|
||||||
|
|
|
||||||
19
SKILL.md
19
SKILL.md
|
|
@ -25,7 +25,6 @@ mkdir -p ~/.gstack/sessions
|
||||||
touch ~/.gstack/sessions/"$PPID"
|
touch ~/.gstack/sessions/"$PPID"
|
||||||
_SESSIONS=$(find ~/.gstack/sessions -mmin -120 -type f 2>/dev/null | wc -l | tr -d ' ')
|
_SESSIONS=$(find ~/.gstack/sessions -mmin -120 -type f 2>/dev/null | wc -l | tr -d ' ')
|
||||||
find ~/.gstack/sessions -mmin +120 -type f -delete 2>/dev/null || true
|
find ~/.gstack/sessions -mmin +120 -type f -delete 2>/dev/null || true
|
||||||
_CONTRIB=$(~/.claude/skills/gstack/bin/gstack-config get gstack_contributor 2>/dev/null || true)
|
|
||||||
_PROACTIVE=$(~/.claude/skills/gstack/bin/gstack-config get proactive 2>/dev/null || echo "true")
|
_PROACTIVE=$(~/.claude/skills/gstack/bin/gstack-config get proactive 2>/dev/null || echo "true")
|
||||||
_PROACTIVE_PROMPTED=$([ -f ~/.gstack/.proactive-prompted ] && echo "yes" || echo "no")
|
_PROACTIVE_PROMPTED=$([ -f ~/.gstack/.proactive-prompted ] && echo "yes" || echo "no")
|
||||||
_BRANCH=$(git branch --show-current 2>/dev/null || echo "unknown")
|
_BRANCH=$(git branch --show-current 2>/dev/null || echo "unknown")
|
||||||
|
|
@ -155,24 +154,6 @@ This only happens once. If `PROACTIVE_PROMPTED` is `yes`, skip this entirely.
|
||||||
|
|
||||||
The user always has context you don't. Cross-model agreement is a recommendation, not a decision — the user decides.
|
The user always has context you don't. Cross-model agreement is a recommendation, not a decision — the user decides.
|
||||||
|
|
||||||
## Contributor Mode
|
|
||||||
|
|
||||||
If `_CONTRIB` is `true`: you are in **contributor mode**. At the end of each major workflow step, rate your gstack experience 0-10. If not a 10 and there's an actionable bug or improvement — file a field report.
|
|
||||||
|
|
||||||
**File only:** gstack tooling bugs where the input was reasonable but gstack failed. **Skip:** user app bugs, network errors, auth failures on user's site.
|
|
||||||
|
|
||||||
**To file:** write `~/.gstack/contributor-logs/{slug}.md`:
|
|
||||||
```
|
|
||||||
# {Title}
|
|
||||||
**What I tried:** {action} | **What happened:** {result} | **Rating:** {0-10}
|
|
||||||
## Repro
|
|
||||||
1. {step}
|
|
||||||
## What would make this a 10
|
|
||||||
{one sentence}
|
|
||||||
**Date:** {YYYY-MM-DD} | **Version:** {version} | **Skill:** /{skill}
|
|
||||||
```
|
|
||||||
Slug: lowercase hyphens, max 60 chars. Skip if exists. Max 3/session. File inline, don't stop.
|
|
||||||
|
|
||||||
## Completion Status Protocol
|
## Completion Status Protocol
|
||||||
|
|
||||||
When completing a skill workflow, report status using one of:
|
When completing a skill workflow, report status using one of:
|
||||||
|
|
|
||||||
|
|
@ -34,7 +34,6 @@ mkdir -p ~/.gstack/sessions
|
||||||
touch ~/.gstack/sessions/"$PPID"
|
touch ~/.gstack/sessions/"$PPID"
|
||||||
_SESSIONS=$(find ~/.gstack/sessions -mmin -120 -type f 2>/dev/null | wc -l | tr -d ' ')
|
_SESSIONS=$(find ~/.gstack/sessions -mmin -120 -type f 2>/dev/null | wc -l | tr -d ' ')
|
||||||
find ~/.gstack/sessions -mmin +120 -type f -delete 2>/dev/null || true
|
find ~/.gstack/sessions -mmin +120 -type f -delete 2>/dev/null || true
|
||||||
_CONTRIB=$(~/.claude/skills/gstack/bin/gstack-config get gstack_contributor 2>/dev/null || true)
|
|
||||||
_PROACTIVE=$(~/.claude/skills/gstack/bin/gstack-config get proactive 2>/dev/null || echo "true")
|
_PROACTIVE=$(~/.claude/skills/gstack/bin/gstack-config get proactive 2>/dev/null || echo "true")
|
||||||
_PROACTIVE_PROMPTED=$([ -f ~/.gstack/.proactive-prompted ] && echo "yes" || echo "no")
|
_PROACTIVE_PROMPTED=$([ -f ~/.gstack/.proactive-prompted ] && echo "yes" || echo "no")
|
||||||
_BRANCH=$(git branch --show-current 2>/dev/null || echo "unknown")
|
_BRANCH=$(git branch --show-current 2>/dev/null || echo "unknown")
|
||||||
|
|
@ -247,24 +246,6 @@ Before building anything unfamiliar, **search first.** See `~/.claude/skills/gst
|
||||||
jq -n --arg ts "$(date -u +%Y-%m-%dT%H:%M:%SZ)" --arg skill "SKILL_NAME" --arg branch "$(git branch --show-current 2>/dev/null)" --arg insight "ONE_LINE_SUMMARY" '{ts:$ts,skill:$skill,branch:$branch,insight:$insight}' >> ~/.gstack/analytics/eureka.jsonl 2>/dev/null || true
|
jq -n --arg ts "$(date -u +%Y-%m-%dT%H:%M:%SZ)" --arg skill "SKILL_NAME" --arg branch "$(git branch --show-current 2>/dev/null)" --arg insight "ONE_LINE_SUMMARY" '{ts:$ts,skill:$skill,branch:$branch,insight:$insight}' >> ~/.gstack/analytics/eureka.jsonl 2>/dev/null || true
|
||||||
```
|
```
|
||||||
|
|
||||||
## Contributor Mode
|
|
||||||
|
|
||||||
If `_CONTRIB` is `true`: you are in **contributor mode**. At the end of each major workflow step, rate your gstack experience 0-10. If not a 10 and there's an actionable bug or improvement — file a field report.
|
|
||||||
|
|
||||||
**File only:** gstack tooling bugs where the input was reasonable but gstack failed. **Skip:** user app bugs, network errors, auth failures on user's site.
|
|
||||||
|
|
||||||
**To file:** write `~/.gstack/contributor-logs/{slug}.md`:
|
|
||||||
```
|
|
||||||
# {Title}
|
|
||||||
**What I tried:** {action} | **What happened:** {result} | **Rating:** {0-10}
|
|
||||||
## Repro
|
|
||||||
1. {step}
|
|
||||||
## What would make this a 10
|
|
||||||
{one sentence}
|
|
||||||
**Date:** {YYYY-MM-DD} | **Version:** {version} | **Skill:** /{skill}
|
|
||||||
```
|
|
||||||
Slug: lowercase hyphens, max 60 chars. Skip if exists. Max 3/session. File inline, don't stop.
|
|
||||||
|
|
||||||
## Completion Status Protocol
|
## Completion Status Protocol
|
||||||
|
|
||||||
When completing a skill workflow, report status using one of:
|
When completing a skill workflow, report status using one of:
|
||||||
|
|
@ -430,7 +411,6 @@ Follow it inline, **skipping these sections** (already handled by the parent ski
|
||||||
- AskUserQuestion Format
|
- AskUserQuestion Format
|
||||||
- Completeness Principle — Boil the Lake
|
- Completeness Principle — Boil the Lake
|
||||||
- Search Before Building
|
- Search Before Building
|
||||||
- Contributor Mode
|
|
||||||
- Completion Status Protocol
|
- Completion Status Protocol
|
||||||
- Telemetry (run last)
|
- Telemetry (run last)
|
||||||
|
|
||||||
|
|
@ -623,7 +603,6 @@ Read each file using the Read tool:
|
||||||
- AskUserQuestion Format
|
- AskUserQuestion Format
|
||||||
- Completeness Principle — Boil the Lake
|
- Completeness Principle — Boil the Lake
|
||||||
- Search Before Building
|
- Search Before Building
|
||||||
- Contributor Mode
|
|
||||||
- Completion Status Protocol
|
- Completion Status Protocol
|
||||||
- Telemetry (run last)
|
- Telemetry (run last)
|
||||||
- Step 0: Detect base branch
|
- Step 0: Detect base branch
|
||||||
|
|
|
||||||
|
|
@ -202,7 +202,6 @@ Read each file using the Read tool:
|
||||||
- AskUserQuestion Format
|
- AskUserQuestion Format
|
||||||
- Completeness Principle — Boil the Lake
|
- Completeness Principle — Boil the Lake
|
||||||
- Search Before Building
|
- Search Before Building
|
||||||
- Contributor Mode
|
|
||||||
- Completion Status Protocol
|
- Completion Status Protocol
|
||||||
- Telemetry (run last)
|
- Telemetry (run last)
|
||||||
- Step 0: Detect base branch
|
- Step 0: Detect base branch
|
||||||
|
|
|
||||||
|
|
@ -27,7 +27,6 @@ mkdir -p ~/.gstack/sessions
|
||||||
touch ~/.gstack/sessions/"$PPID"
|
touch ~/.gstack/sessions/"$PPID"
|
||||||
_SESSIONS=$(find ~/.gstack/sessions -mmin -120 -type f 2>/dev/null | wc -l | tr -d ' ')
|
_SESSIONS=$(find ~/.gstack/sessions -mmin -120 -type f 2>/dev/null | wc -l | tr -d ' ')
|
||||||
find ~/.gstack/sessions -mmin +120 -type f -delete 2>/dev/null || true
|
find ~/.gstack/sessions -mmin +120 -type f -delete 2>/dev/null || true
|
||||||
_CONTRIB=$(~/.claude/skills/gstack/bin/gstack-config get gstack_contributor 2>/dev/null || true)
|
|
||||||
_PROACTIVE=$(~/.claude/skills/gstack/bin/gstack-config get proactive 2>/dev/null || echo "true")
|
_PROACTIVE=$(~/.claude/skills/gstack/bin/gstack-config get proactive 2>/dev/null || echo "true")
|
||||||
_PROACTIVE_PROMPTED=$([ -f ~/.gstack/.proactive-prompted ] && echo "yes" || echo "no")
|
_PROACTIVE_PROMPTED=$([ -f ~/.gstack/.proactive-prompted ] && echo "yes" || echo "no")
|
||||||
_BRANCH=$(git branch --show-current 2>/dev/null || echo "unknown")
|
_BRANCH=$(git branch --show-current 2>/dev/null || echo "unknown")
|
||||||
|
|
@ -157,24 +156,6 @@ This only happens once. If `PROACTIVE_PROMPTED` is `yes`, skip this entirely.
|
||||||
|
|
||||||
The user always has context you don't. Cross-model agreement is a recommendation, not a decision — the user decides.
|
The user always has context you don't. Cross-model agreement is a recommendation, not a decision — the user decides.
|
||||||
|
|
||||||
## Contributor Mode
|
|
||||||
|
|
||||||
If `_CONTRIB` is `true`: you are in **contributor mode**. At the end of each major workflow step, rate your gstack experience 0-10. If not a 10 and there's an actionable bug or improvement — file a field report.
|
|
||||||
|
|
||||||
**File only:** gstack tooling bugs where the input was reasonable but gstack failed. **Skip:** user app bugs, network errors, auth failures on user's site.
|
|
||||||
|
|
||||||
**To file:** write `~/.gstack/contributor-logs/{slug}.md`:
|
|
||||||
```
|
|
||||||
# {Title}
|
|
||||||
**What I tried:** {action} | **What happened:** {result} | **Rating:** {0-10}
|
|
||||||
## Repro
|
|
||||||
1. {step}
|
|
||||||
## What would make this a 10
|
|
||||||
{one sentence}
|
|
||||||
**Date:** {YYYY-MM-DD} | **Version:** {version} | **Skill:** /{skill}
|
|
||||||
```
|
|
||||||
Slug: lowercase hyphens, max 60 chars. Skip if exists. Max 3/session. File inline, don't stop.
|
|
||||||
|
|
||||||
## Completion Status Protocol
|
## Completion Status Protocol
|
||||||
|
|
||||||
When completing a skill workflow, report status using one of:
|
When completing a skill workflow, report status using one of:
|
||||||
|
|
|
||||||
|
|
@ -27,7 +27,6 @@ mkdir -p ~/.gstack/sessions
|
||||||
touch ~/.gstack/sessions/"$PPID"
|
touch ~/.gstack/sessions/"$PPID"
|
||||||
_SESSIONS=$(find ~/.gstack/sessions -mmin -120 -type f 2>/dev/null | wc -l | tr -d ' ')
|
_SESSIONS=$(find ~/.gstack/sessions -mmin -120 -type f 2>/dev/null | wc -l | tr -d ' ')
|
||||||
find ~/.gstack/sessions -mmin +120 -type f -delete 2>/dev/null || true
|
find ~/.gstack/sessions -mmin +120 -type f -delete 2>/dev/null || true
|
||||||
_CONTRIB=$(~/.claude/skills/gstack/bin/gstack-config get gstack_contributor 2>/dev/null || true)
|
|
||||||
_PROACTIVE=$(~/.claude/skills/gstack/bin/gstack-config get proactive 2>/dev/null || echo "true")
|
_PROACTIVE=$(~/.claude/skills/gstack/bin/gstack-config get proactive 2>/dev/null || echo "true")
|
||||||
_PROACTIVE_PROMPTED=$([ -f ~/.gstack/.proactive-prompted ] && echo "yes" || echo "no")
|
_PROACTIVE_PROMPTED=$([ -f ~/.gstack/.proactive-prompted ] && echo "yes" || echo "no")
|
||||||
_BRANCH=$(git branch --show-current 2>/dev/null || echo "unknown")
|
_BRANCH=$(git branch --show-current 2>/dev/null || echo "unknown")
|
||||||
|
|
@ -157,24 +156,6 @@ This only happens once. If `PROACTIVE_PROMPTED` is `yes`, skip this entirely.
|
||||||
|
|
||||||
The user always has context you don't. Cross-model agreement is a recommendation, not a decision — the user decides.
|
The user always has context you don't. Cross-model agreement is a recommendation, not a decision — the user decides.
|
||||||
|
|
||||||
## Contributor Mode
|
|
||||||
|
|
||||||
If `_CONTRIB` is `true`: you are in **contributor mode**. At the end of each major workflow step, rate your gstack experience 0-10. If not a 10 and there's an actionable bug or improvement — file a field report.
|
|
||||||
|
|
||||||
**File only:** gstack tooling bugs where the input was reasonable but gstack failed. **Skip:** user app bugs, network errors, auth failures on user's site.
|
|
||||||
|
|
||||||
**To file:** write `~/.gstack/contributor-logs/{slug}.md`:
|
|
||||||
```
|
|
||||||
# {Title}
|
|
||||||
**What I tried:** {action} | **What happened:** {result} | **Rating:** {0-10}
|
|
||||||
## Repro
|
|
||||||
1. {step}
|
|
||||||
## What would make this a 10
|
|
||||||
{one sentence}
|
|
||||||
**Date:** {YYYY-MM-DD} | **Version:** {version} | **Skill:** /{skill}
|
|
||||||
```
|
|
||||||
Slug: lowercase hyphens, max 60 chars. Skip if exists. Max 3/session. File inline, don't stop.
|
|
||||||
|
|
||||||
## Completion Status Protocol
|
## Completion Status Protocol
|
||||||
|
|
||||||
When completing a skill workflow, report status using one of:
|
When completing a skill workflow, report status using one of:
|
||||||
|
|
|
||||||
|
|
@ -27,7 +27,6 @@ mkdir -p ~/.gstack/sessions
|
||||||
touch ~/.gstack/sessions/"$PPID"
|
touch ~/.gstack/sessions/"$PPID"
|
||||||
_SESSIONS=$(find ~/.gstack/sessions -mmin -120 -type f 2>/dev/null | wc -l | tr -d ' ')
|
_SESSIONS=$(find ~/.gstack/sessions -mmin -120 -type f 2>/dev/null | wc -l | tr -d ' ')
|
||||||
find ~/.gstack/sessions -mmin +120 -type f -delete 2>/dev/null || true
|
find ~/.gstack/sessions -mmin +120 -type f -delete 2>/dev/null || true
|
||||||
_CONTRIB=$(~/.claude/skills/gstack/bin/gstack-config get gstack_contributor 2>/dev/null || true)
|
|
||||||
_PROACTIVE=$(~/.claude/skills/gstack/bin/gstack-config get proactive 2>/dev/null || echo "true")
|
_PROACTIVE=$(~/.claude/skills/gstack/bin/gstack-config get proactive 2>/dev/null || echo "true")
|
||||||
_PROACTIVE_PROMPTED=$([ -f ~/.gstack/.proactive-prompted ] && echo "yes" || echo "no")
|
_PROACTIVE_PROMPTED=$([ -f ~/.gstack/.proactive-prompted ] && echo "yes" || echo "no")
|
||||||
_BRANCH=$(git branch --show-current 2>/dev/null || echo "unknown")
|
_BRANCH=$(git branch --show-current 2>/dev/null || echo "unknown")
|
||||||
|
|
@ -222,24 +221,6 @@ AI makes completeness near-free. Always recommend the complete option over short
|
||||||
|
|
||||||
Include `Completeness: X/10` for each option (10=all edge cases, 7=happy path, 3=shortcut).
|
Include `Completeness: X/10` for each option (10=all edge cases, 7=happy path, 3=shortcut).
|
||||||
|
|
||||||
## Contributor Mode
|
|
||||||
|
|
||||||
If `_CONTRIB` is `true`: you are in **contributor mode**. At the end of each major workflow step, rate your gstack experience 0-10. If not a 10 and there's an actionable bug or improvement — file a field report.
|
|
||||||
|
|
||||||
**File only:** gstack tooling bugs where the input was reasonable but gstack failed. **Skip:** user app bugs, network errors, auth failures on user's site.
|
|
||||||
|
|
||||||
**To file:** write `~/.gstack/contributor-logs/{slug}.md`:
|
|
||||||
```
|
|
||||||
# {Title}
|
|
||||||
**What I tried:** {action} | **What happened:** {result} | **Rating:** {0-10}
|
|
||||||
## Repro
|
|
||||||
1. {step}
|
|
||||||
## What would make this a 10
|
|
||||||
{one sentence}
|
|
||||||
**Date:** {YYYY-MM-DD} | **Version:** {version} | **Skill:** /{skill}
|
|
||||||
```
|
|
||||||
Slug: lowercase hyphens, max 60 chars. Skip if exists. Max 3/session. File inline, don't stop.
|
|
||||||
|
|
||||||
## Completion Status Protocol
|
## Completion Status Protocol
|
||||||
|
|
||||||
When completing a skill workflow, report status using one of:
|
When completing a skill workflow, report status using one of:
|
||||||
|
|
|
||||||
|
|
@ -28,7 +28,6 @@ mkdir -p ~/.gstack/sessions
|
||||||
touch ~/.gstack/sessions/"$PPID"
|
touch ~/.gstack/sessions/"$PPID"
|
||||||
_SESSIONS=$(find ~/.gstack/sessions -mmin -120 -type f 2>/dev/null | wc -l | tr -d ' ')
|
_SESSIONS=$(find ~/.gstack/sessions -mmin -120 -type f 2>/dev/null | wc -l | tr -d ' ')
|
||||||
find ~/.gstack/sessions -mmin +120 -type f -delete 2>/dev/null || true
|
find ~/.gstack/sessions -mmin +120 -type f -delete 2>/dev/null || true
|
||||||
_CONTRIB=$(~/.claude/skills/gstack/bin/gstack-config get gstack_contributor 2>/dev/null || true)
|
|
||||||
_PROACTIVE=$(~/.claude/skills/gstack/bin/gstack-config get proactive 2>/dev/null || echo "true")
|
_PROACTIVE=$(~/.claude/skills/gstack/bin/gstack-config get proactive 2>/dev/null || echo "true")
|
||||||
_PROACTIVE_PROMPTED=$([ -f ~/.gstack/.proactive-prompted ] && echo "yes" || echo "no")
|
_PROACTIVE_PROMPTED=$([ -f ~/.gstack/.proactive-prompted ] && echo "yes" || echo "no")
|
||||||
_BRANCH=$(git branch --show-current 2>/dev/null || echo "unknown")
|
_BRANCH=$(git branch --show-current 2>/dev/null || echo "unknown")
|
||||||
|
|
@ -241,24 +240,6 @@ Before building anything unfamiliar, **search first.** See `~/.claude/skills/gst
|
||||||
jq -n --arg ts "$(date -u +%Y-%m-%dT%H:%M:%SZ)" --arg skill "SKILL_NAME" --arg branch "$(git branch --show-current 2>/dev/null)" --arg insight "ONE_LINE_SUMMARY" '{ts:$ts,skill:$skill,branch:$branch,insight:$insight}' >> ~/.gstack/analytics/eureka.jsonl 2>/dev/null || true
|
jq -n --arg ts "$(date -u +%Y-%m-%dT%H:%M:%SZ)" --arg skill "SKILL_NAME" --arg branch "$(git branch --show-current 2>/dev/null)" --arg insight "ONE_LINE_SUMMARY" '{ts:$ts,skill:$skill,branch:$branch,insight:$insight}' >> ~/.gstack/analytics/eureka.jsonl 2>/dev/null || true
|
||||||
```
|
```
|
||||||
|
|
||||||
## Contributor Mode
|
|
||||||
|
|
||||||
If `_CONTRIB` is `true`: you are in **contributor mode**. At the end of each major workflow step, rate your gstack experience 0-10. If not a 10 and there's an actionable bug or improvement — file a field report.
|
|
||||||
|
|
||||||
**File only:** gstack tooling bugs where the input was reasonable but gstack failed. **Skip:** user app bugs, network errors, auth failures on user's site.
|
|
||||||
|
|
||||||
**To file:** write `~/.gstack/contributor-logs/{slug}.md`:
|
|
||||||
```
|
|
||||||
# {Title}
|
|
||||||
**What I tried:** {action} | **What happened:** {result} | **Rating:** {0-10}
|
|
||||||
## Repro
|
|
||||||
1. {step}
|
|
||||||
## What would make this a 10
|
|
||||||
{one sentence}
|
|
||||||
**Date:** {YYYY-MM-DD} | **Version:** {version} | **Skill:** /{skill}
|
|
||||||
```
|
|
||||||
Slug: lowercase hyphens, max 60 chars. Skip if exists. Max 3/session. File inline, don't stop.
|
|
||||||
|
|
||||||
## Completion Status Protocol
|
## Completion Status Protocol
|
||||||
|
|
||||||
When completing a skill workflow, report status using one of:
|
When completing a skill workflow, report status using one of:
|
||||||
|
|
|
||||||
|
|
@ -25,7 +25,6 @@ mkdir -p ~/.gstack/sessions
|
||||||
touch ~/.gstack/sessions/"$PPID"
|
touch ~/.gstack/sessions/"$PPID"
|
||||||
_SESSIONS=$(find ~/.gstack/sessions -mmin -120 -type f 2>/dev/null | wc -l | tr -d ' ')
|
_SESSIONS=$(find ~/.gstack/sessions -mmin -120 -type f 2>/dev/null | wc -l | tr -d ' ')
|
||||||
find ~/.gstack/sessions -mmin +120 -type f -delete 2>/dev/null || true
|
find ~/.gstack/sessions -mmin +120 -type f -delete 2>/dev/null || true
|
||||||
_CONTRIB=$(~/.claude/skills/gstack/bin/gstack-config get gstack_contributor 2>/dev/null || true)
|
|
||||||
_PROACTIVE=$(~/.claude/skills/gstack/bin/gstack-config get proactive 2>/dev/null || echo "true")
|
_PROACTIVE=$(~/.claude/skills/gstack/bin/gstack-config get proactive 2>/dev/null || echo "true")
|
||||||
_PROACTIVE_PROMPTED=$([ -f ~/.gstack/.proactive-prompted ] && echo "yes" || echo "no")
|
_PROACTIVE_PROMPTED=$([ -f ~/.gstack/.proactive-prompted ] && echo "yes" || echo "no")
|
||||||
_BRANCH=$(git branch --show-current 2>/dev/null || echo "unknown")
|
_BRANCH=$(git branch --show-current 2>/dev/null || echo "unknown")
|
||||||
|
|
@ -238,24 +237,6 @@ Before building anything unfamiliar, **search first.** See `~/.claude/skills/gst
|
||||||
jq -n --arg ts "$(date -u +%Y-%m-%dT%H:%M:%SZ)" --arg skill "SKILL_NAME" --arg branch "$(git branch --show-current 2>/dev/null)" --arg insight "ONE_LINE_SUMMARY" '{ts:$ts,skill:$skill,branch:$branch,insight:$insight}' >> ~/.gstack/analytics/eureka.jsonl 2>/dev/null || true
|
jq -n --arg ts "$(date -u +%Y-%m-%dT%H:%M:%SZ)" --arg skill "SKILL_NAME" --arg branch "$(git branch --show-current 2>/dev/null)" --arg insight "ONE_LINE_SUMMARY" '{ts:$ts,skill:$skill,branch:$branch,insight:$insight}' >> ~/.gstack/analytics/eureka.jsonl 2>/dev/null || true
|
||||||
```
|
```
|
||||||
|
|
||||||
## Contributor Mode
|
|
||||||
|
|
||||||
If `_CONTRIB` is `true`: you are in **contributor mode**. At the end of each major workflow step, rate your gstack experience 0-10. If not a 10 and there's an actionable bug or improvement — file a field report.
|
|
||||||
|
|
||||||
**File only:** gstack tooling bugs where the input was reasonable but gstack failed. **Skip:** user app bugs, network errors, auth failures on user's site.
|
|
||||||
|
|
||||||
**To file:** write `~/.gstack/contributor-logs/{slug}.md`:
|
|
||||||
```
|
|
||||||
# {Title}
|
|
||||||
**What I tried:** {action} | **What happened:** {result} | **Rating:** {0-10}
|
|
||||||
## Repro
|
|
||||||
1. {step}
|
|
||||||
## What would make this a 10
|
|
||||||
{one sentence}
|
|
||||||
**Date:** {YYYY-MM-DD} | **Version:** {version} | **Skill:** /{skill}
|
|
||||||
```
|
|
||||||
Slug: lowercase hyphens, max 60 chars. Skip if exists. Max 3/session. File inline, don't stop.
|
|
||||||
|
|
||||||
## Completion Status Protocol
|
## Completion Status Protocol
|
||||||
|
|
||||||
When completing a skill workflow, report status using one of:
|
When completing a skill workflow, report status using one of:
|
||||||
|
|
|
||||||
19
cso/SKILL.md
19
cso/SKILL.md
|
|
@ -31,7 +31,6 @@ mkdir -p ~/.gstack/sessions
|
||||||
touch ~/.gstack/sessions/"$PPID"
|
touch ~/.gstack/sessions/"$PPID"
|
||||||
_SESSIONS=$(find ~/.gstack/sessions -mmin -120 -type f 2>/dev/null | wc -l | tr -d ' ')
|
_SESSIONS=$(find ~/.gstack/sessions -mmin -120 -type f 2>/dev/null | wc -l | tr -d ' ')
|
||||||
find ~/.gstack/sessions -mmin +120 -type f -delete 2>/dev/null || true
|
find ~/.gstack/sessions -mmin +120 -type f -delete 2>/dev/null || true
|
||||||
_CONTRIB=$(~/.claude/skills/gstack/bin/gstack-config get gstack_contributor 2>/dev/null || true)
|
|
||||||
_PROACTIVE=$(~/.claude/skills/gstack/bin/gstack-config get proactive 2>/dev/null || echo "true")
|
_PROACTIVE=$(~/.claude/skills/gstack/bin/gstack-config get proactive 2>/dev/null || echo "true")
|
||||||
_PROACTIVE_PROMPTED=$([ -f ~/.gstack/.proactive-prompted ] && echo "yes" || echo "no")
|
_PROACTIVE_PROMPTED=$([ -f ~/.gstack/.proactive-prompted ] && echo "yes" || echo "no")
|
||||||
_BRANCH=$(git branch --show-current 2>/dev/null || echo "unknown")
|
_BRANCH=$(git branch --show-current 2>/dev/null || echo "unknown")
|
||||||
|
|
@ -226,24 +225,6 @@ AI makes completeness near-free. Always recommend the complete option over short
|
||||||
|
|
||||||
Include `Completeness: X/10` for each option (10=all edge cases, 7=happy path, 3=shortcut).
|
Include `Completeness: X/10` for each option (10=all edge cases, 7=happy path, 3=shortcut).
|
||||||
|
|
||||||
## Contributor Mode
|
|
||||||
|
|
||||||
If `_CONTRIB` is `true`: you are in **contributor mode**. At the end of each major workflow step, rate your gstack experience 0-10. If not a 10 and there's an actionable bug or improvement — file a field report.
|
|
||||||
|
|
||||||
**File only:** gstack tooling bugs where the input was reasonable but gstack failed. **Skip:** user app bugs, network errors, auth failures on user's site.
|
|
||||||
|
|
||||||
**To file:** write `~/.gstack/contributor-logs/{slug}.md`:
|
|
||||||
```
|
|
||||||
# {Title}
|
|
||||||
**What I tried:** {action} | **What happened:** {result} | **Rating:** {0-10}
|
|
||||||
## Repro
|
|
||||||
1. {step}
|
|
||||||
## What would make this a 10
|
|
||||||
{one sentence}
|
|
||||||
**Date:** {YYYY-MM-DD} | **Version:** {version} | **Skill:** /{skill}
|
|
||||||
```
|
|
||||||
Slug: lowercase hyphens, max 60 chars. Skip if exists. Max 3/session. File inline, don't stop.
|
|
||||||
|
|
||||||
## Completion Status Protocol
|
## Completion Status Protocol
|
||||||
|
|
||||||
When completing a skill workflow, report status using one of:
|
When completing a skill workflow, report status using one of:
|
||||||
|
|
|
||||||
|
|
@ -32,7 +32,6 @@ mkdir -p ~/.gstack/sessions
|
||||||
touch ~/.gstack/sessions/"$PPID"
|
touch ~/.gstack/sessions/"$PPID"
|
||||||
_SESSIONS=$(find ~/.gstack/sessions -mmin -120 -type f 2>/dev/null | wc -l | tr -d ' ')
|
_SESSIONS=$(find ~/.gstack/sessions -mmin -120 -type f 2>/dev/null | wc -l | tr -d ' ')
|
||||||
find ~/.gstack/sessions -mmin +120 -type f -delete 2>/dev/null || true
|
find ~/.gstack/sessions -mmin +120 -type f -delete 2>/dev/null || true
|
||||||
_CONTRIB=$(~/.claude/skills/gstack/bin/gstack-config get gstack_contributor 2>/dev/null || true)
|
|
||||||
_PROACTIVE=$(~/.claude/skills/gstack/bin/gstack-config get proactive 2>/dev/null || echo "true")
|
_PROACTIVE=$(~/.claude/skills/gstack/bin/gstack-config get proactive 2>/dev/null || echo "true")
|
||||||
_PROACTIVE_PROMPTED=$([ -f ~/.gstack/.proactive-prompted ] && echo "yes" || echo "no")
|
_PROACTIVE_PROMPTED=$([ -f ~/.gstack/.proactive-prompted ] && echo "yes" || echo "no")
|
||||||
_BRANCH=$(git branch --show-current 2>/dev/null || echo "unknown")
|
_BRANCH=$(git branch --show-current 2>/dev/null || echo "unknown")
|
||||||
|
|
@ -245,24 +244,6 @@ Before building anything unfamiliar, **search first.** See `~/.claude/skills/gst
|
||||||
jq -n --arg ts "$(date -u +%Y-%m-%dT%H:%M:%SZ)" --arg skill "SKILL_NAME" --arg branch "$(git branch --show-current 2>/dev/null)" --arg insight "ONE_LINE_SUMMARY" '{ts:$ts,skill:$skill,branch:$branch,insight:$insight}' >> ~/.gstack/analytics/eureka.jsonl 2>/dev/null || true
|
jq -n --arg ts "$(date -u +%Y-%m-%dT%H:%M:%SZ)" --arg skill "SKILL_NAME" --arg branch "$(git branch --show-current 2>/dev/null)" --arg insight "ONE_LINE_SUMMARY" '{ts:$ts,skill:$skill,branch:$branch,insight:$insight}' >> ~/.gstack/analytics/eureka.jsonl 2>/dev/null || true
|
||||||
```
|
```
|
||||||
|
|
||||||
## Contributor Mode
|
|
||||||
|
|
||||||
If `_CONTRIB` is `true`: you are in **contributor mode**. At the end of each major workflow step, rate your gstack experience 0-10. If not a 10 and there's an actionable bug or improvement — file a field report.
|
|
||||||
|
|
||||||
**File only:** gstack tooling bugs where the input was reasonable but gstack failed. **Skip:** user app bugs, network errors, auth failures on user's site.
|
|
||||||
|
|
||||||
**To file:** write `~/.gstack/contributor-logs/{slug}.md`:
|
|
||||||
```
|
|
||||||
# {Title}
|
|
||||||
**What I tried:** {action} | **What happened:** {result} | **Rating:** {0-10}
|
|
||||||
## Repro
|
|
||||||
1. {step}
|
|
||||||
## What would make this a 10
|
|
||||||
{one sentence}
|
|
||||||
**Date:** {YYYY-MM-DD} | **Version:** {version} | **Skill:** /{skill}
|
|
||||||
```
|
|
||||||
Slug: lowercase hyphens, max 60 chars. Skip if exists. Max 3/session. File inline, don't stop.
|
|
||||||
|
|
||||||
## Completion Status Protocol
|
## Completion Status Protocol
|
||||||
|
|
||||||
When completing a skill workflow, report status using one of:
|
When completing a skill workflow, report status using one of:
|
||||||
|
|
|
||||||
|
|
@ -32,7 +32,6 @@ mkdir -p ~/.gstack/sessions
|
||||||
touch ~/.gstack/sessions/"$PPID"
|
touch ~/.gstack/sessions/"$PPID"
|
||||||
_SESSIONS=$(find ~/.gstack/sessions -mmin -120 -type f 2>/dev/null | wc -l | tr -d ' ')
|
_SESSIONS=$(find ~/.gstack/sessions -mmin -120 -type f 2>/dev/null | wc -l | tr -d ' ')
|
||||||
find ~/.gstack/sessions -mmin +120 -type f -delete 2>/dev/null || true
|
find ~/.gstack/sessions -mmin +120 -type f -delete 2>/dev/null || true
|
||||||
_CONTRIB=$(~/.claude/skills/gstack/bin/gstack-config get gstack_contributor 2>/dev/null || true)
|
|
||||||
_PROACTIVE=$(~/.claude/skills/gstack/bin/gstack-config get proactive 2>/dev/null || echo "true")
|
_PROACTIVE=$(~/.claude/skills/gstack/bin/gstack-config get proactive 2>/dev/null || echo "true")
|
||||||
_PROACTIVE_PROMPTED=$([ -f ~/.gstack/.proactive-prompted ] && echo "yes" || echo "no")
|
_PROACTIVE_PROMPTED=$([ -f ~/.gstack/.proactive-prompted ] && echo "yes" || echo "no")
|
||||||
_BRANCH=$(git branch --show-current 2>/dev/null || echo "unknown")
|
_BRANCH=$(git branch --show-current 2>/dev/null || echo "unknown")
|
||||||
|
|
@ -245,24 +244,6 @@ Before building anything unfamiliar, **search first.** See `~/.claude/skills/gst
|
||||||
jq -n --arg ts "$(date -u +%Y-%m-%dT%H:%M:%SZ)" --arg skill "SKILL_NAME" --arg branch "$(git branch --show-current 2>/dev/null)" --arg insight "ONE_LINE_SUMMARY" '{ts:$ts,skill:$skill,branch:$branch,insight:$insight}' >> ~/.gstack/analytics/eureka.jsonl 2>/dev/null || true
|
jq -n --arg ts "$(date -u +%Y-%m-%dT%H:%M:%SZ)" --arg skill "SKILL_NAME" --arg branch "$(git branch --show-current 2>/dev/null)" --arg insight "ONE_LINE_SUMMARY" '{ts:$ts,skill:$skill,branch:$branch,insight:$insight}' >> ~/.gstack/analytics/eureka.jsonl 2>/dev/null || true
|
||||||
```
|
```
|
||||||
|
|
||||||
## Contributor Mode
|
|
||||||
|
|
||||||
If `_CONTRIB` is `true`: you are in **contributor mode**. At the end of each major workflow step, rate your gstack experience 0-10. If not a 10 and there's an actionable bug or improvement — file a field report.
|
|
||||||
|
|
||||||
**File only:** gstack tooling bugs where the input was reasonable but gstack failed. **Skip:** user app bugs, network errors, auth failures on user's site.
|
|
||||||
|
|
||||||
**To file:** write `~/.gstack/contributor-logs/{slug}.md`:
|
|
||||||
```
|
|
||||||
# {Title}
|
|
||||||
**What I tried:** {action} | **What happened:** {result} | **Rating:** {0-10}
|
|
||||||
## Repro
|
|
||||||
1. {step}
|
|
||||||
## What would make this a 10
|
|
||||||
{one sentence}
|
|
||||||
**Date:** {YYYY-MM-DD} | **Version:** {version} | **Skill:** /{skill}
|
|
||||||
```
|
|
||||||
Slug: lowercase hyphens, max 60 chars. Skip if exists. Max 3/session. File inline, don't stop.
|
|
||||||
|
|
||||||
## Completion Status Protocol
|
## Completion Status Protocol
|
||||||
|
|
||||||
When completing a skill workflow, report status using one of:
|
When completing a skill workflow, report status using one of:
|
||||||
|
|
|
||||||
|
|
@ -29,7 +29,6 @@ mkdir -p ~/.gstack/sessions
|
||||||
touch ~/.gstack/sessions/"$PPID"
|
touch ~/.gstack/sessions/"$PPID"
|
||||||
_SESSIONS=$(find ~/.gstack/sessions -mmin -120 -type f 2>/dev/null | wc -l | tr -d ' ')
|
_SESSIONS=$(find ~/.gstack/sessions -mmin -120 -type f 2>/dev/null | wc -l | tr -d ' ')
|
||||||
find ~/.gstack/sessions -mmin +120 -type f -delete 2>/dev/null || true
|
find ~/.gstack/sessions -mmin +120 -type f -delete 2>/dev/null || true
|
||||||
_CONTRIB=$(~/.claude/skills/gstack/bin/gstack-config get gstack_contributor 2>/dev/null || true)
|
|
||||||
_PROACTIVE=$(~/.claude/skills/gstack/bin/gstack-config get proactive 2>/dev/null || echo "true")
|
_PROACTIVE=$(~/.claude/skills/gstack/bin/gstack-config get proactive 2>/dev/null || echo "true")
|
||||||
_PROACTIVE_PROMPTED=$([ -f ~/.gstack/.proactive-prompted ] && echo "yes" || echo "no")
|
_PROACTIVE_PROMPTED=$([ -f ~/.gstack/.proactive-prompted ] && echo "yes" || echo "no")
|
||||||
_BRANCH=$(git branch --show-current 2>/dev/null || echo "unknown")
|
_BRANCH=$(git branch --show-current 2>/dev/null || echo "unknown")
|
||||||
|
|
@ -224,24 +223,6 @@ AI makes completeness near-free. Always recommend the complete option over short
|
||||||
|
|
||||||
Include `Completeness: X/10` for each option (10=all edge cases, 7=happy path, 3=shortcut).
|
Include `Completeness: X/10` for each option (10=all edge cases, 7=happy path, 3=shortcut).
|
||||||
|
|
||||||
## Contributor Mode
|
|
||||||
|
|
||||||
If `_CONTRIB` is `true`: you are in **contributor mode**. At the end of each major workflow step, rate your gstack experience 0-10. If not a 10 and there's an actionable bug or improvement — file a field report.
|
|
||||||
|
|
||||||
**File only:** gstack tooling bugs where the input was reasonable but gstack failed. **Skip:** user app bugs, network errors, auth failures on user's site.
|
|
||||||
|
|
||||||
**To file:** write `~/.gstack/contributor-logs/{slug}.md`:
|
|
||||||
```
|
|
||||||
# {Title}
|
|
||||||
**What I tried:** {action} | **What happened:** {result} | **Rating:** {0-10}
|
|
||||||
## Repro
|
|
||||||
1. {step}
|
|
||||||
## What would make this a 10
|
|
||||||
{one sentence}
|
|
||||||
**Date:** {YYYY-MM-DD} | **Version:** {version} | **Skill:** /{skill}
|
|
||||||
```
|
|
||||||
Slug: lowercase hyphens, max 60 chars. Skip if exists. Max 3/session. File inline, don't stop.
|
|
||||||
|
|
||||||
## Completion Status Protocol
|
## Completion Status Protocol
|
||||||
|
|
||||||
When completing a skill workflow, report status using one of:
|
When completing a skill workflow, report status using one of:
|
||||||
|
|
|
||||||
|
|
@ -29,7 +29,6 @@ mkdir -p ~/.gstack/sessions
|
||||||
touch ~/.gstack/sessions/"$PPID"
|
touch ~/.gstack/sessions/"$PPID"
|
||||||
_SESSIONS=$(find ~/.gstack/sessions -mmin -120 -type f 2>/dev/null | wc -l | tr -d ' ')
|
_SESSIONS=$(find ~/.gstack/sessions -mmin -120 -type f 2>/dev/null | wc -l | tr -d ' ')
|
||||||
find ~/.gstack/sessions -mmin +120 -type f -delete 2>/dev/null || true
|
find ~/.gstack/sessions -mmin +120 -type f -delete 2>/dev/null || true
|
||||||
_CONTRIB=$(~/.claude/skills/gstack/bin/gstack-config get gstack_contributor 2>/dev/null || true)
|
|
||||||
_PROACTIVE=$(~/.claude/skills/gstack/bin/gstack-config get proactive 2>/dev/null || echo "true")
|
_PROACTIVE=$(~/.claude/skills/gstack/bin/gstack-config get proactive 2>/dev/null || echo "true")
|
||||||
_PROACTIVE_PROMPTED=$([ -f ~/.gstack/.proactive-prompted ] && echo "yes" || echo "no")
|
_PROACTIVE_PROMPTED=$([ -f ~/.gstack/.proactive-prompted ] && echo "yes" || echo "no")
|
||||||
_BRANCH=$(git branch --show-current 2>/dev/null || echo "unknown")
|
_BRANCH=$(git branch --show-current 2>/dev/null || echo "unknown")
|
||||||
|
|
@ -224,24 +223,6 @@ AI makes completeness near-free. Always recommend the complete option over short
|
||||||
|
|
||||||
Include `Completeness: X/10` for each option (10=all edge cases, 7=happy path, 3=shortcut).
|
Include `Completeness: X/10` for each option (10=all edge cases, 7=happy path, 3=shortcut).
|
||||||
|
|
||||||
## Contributor Mode
|
|
||||||
|
|
||||||
If `_CONTRIB` is `true`: you are in **contributor mode**. At the end of each major workflow step, rate your gstack experience 0-10. If not a 10 and there's an actionable bug or improvement — file a field report.
|
|
||||||
|
|
||||||
**File only:** gstack tooling bugs where the input was reasonable but gstack failed. **Skip:** user app bugs, network errors, auth failures on user's site.
|
|
||||||
|
|
||||||
**To file:** write `~/.gstack/contributor-logs/{slug}.md`:
|
|
||||||
```
|
|
||||||
# {Title}
|
|
||||||
**What I tried:** {action} | **What happened:** {result} | **Rating:** {0-10}
|
|
||||||
## Repro
|
|
||||||
1. {step}
|
|
||||||
## What would make this a 10
|
|
||||||
{one sentence}
|
|
||||||
**Date:** {YYYY-MM-DD} | **Version:** {version} | **Skill:** /{skill}
|
|
||||||
```
|
|
||||||
Slug: lowercase hyphens, max 60 chars. Skip if exists. Max 3/session. File inline, don't stop.
|
|
||||||
|
|
||||||
## Completion Status Protocol
|
## Completion Status Protocol
|
||||||
|
|
||||||
When completing a skill workflow, report status using one of:
|
When completing a skill workflow, report status using one of:
|
||||||
|
|
@ -461,7 +442,7 @@ Read each documentation file and cross-reference it against the diff. Use these
|
||||||
- Walk through the setup instructions as if you are a brand new contributor.
|
- Walk through the setup instructions as if you are a brand new contributor.
|
||||||
- Are the listed commands accurate? Would each step succeed?
|
- Are the listed commands accurate? Would each step succeed?
|
||||||
- Do test tier descriptions match the current test infrastructure?
|
- Do test tier descriptions match the current test infrastructure?
|
||||||
- Are workflow descriptions (dev setup, contributor mode, etc.) current?
|
- Are workflow descriptions (dev setup, operational learnings, etc.) current?
|
||||||
- Flag anything that would fail or confuse a first-time contributor.
|
- Flag anything that would fail or confuse a first-time contributor.
|
||||||
|
|
||||||
**CLAUDE.md / project instructions:**
|
**CLAUDE.md / project instructions:**
|
||||||
|
|
|
||||||
|
|
@ -108,7 +108,7 @@ Read each documentation file and cross-reference it against the diff. Use these
|
||||||
- Walk through the setup instructions as if you are a brand new contributor.
|
- Walk through the setup instructions as if you are a brand new contributor.
|
||||||
- Are the listed commands accurate? Would each step succeed?
|
- Are the listed commands accurate? Would each step succeed?
|
||||||
- Do test tier descriptions match the current test infrastructure?
|
- Do test tier descriptions match the current test infrastructure?
|
||||||
- Are workflow descriptions (dev setup, contributor mode, etc.) current?
|
- Are workflow descriptions (dev setup, operational learnings, etc.) current?
|
||||||
- Flag anything that would fail or confuse a first-time contributor.
|
- Flag anything that would fail or confuse a first-time contributor.
|
||||||
|
|
||||||
**CLAUDE.md / project instructions:**
|
**CLAUDE.md / project instructions:**
|
||||||
|
|
|
||||||
|
|
@ -43,7 +43,6 @@ mkdir -p ~/.gstack/sessions
|
||||||
touch ~/.gstack/sessions/"$PPID"
|
touch ~/.gstack/sessions/"$PPID"
|
||||||
_SESSIONS=$(find ~/.gstack/sessions -mmin -120 -type f 2>/dev/null | wc -l | tr -d ' ')
|
_SESSIONS=$(find ~/.gstack/sessions -mmin -120 -type f 2>/dev/null | wc -l | tr -d ' ')
|
||||||
find ~/.gstack/sessions -mmin +120 -type f -delete 2>/dev/null || true
|
find ~/.gstack/sessions -mmin +120 -type f -delete 2>/dev/null || true
|
||||||
_CONTRIB=$(~/.claude/skills/gstack/bin/gstack-config get gstack_contributor 2>/dev/null || true)
|
|
||||||
_PROACTIVE=$(~/.claude/skills/gstack/bin/gstack-config get proactive 2>/dev/null || echo "true")
|
_PROACTIVE=$(~/.claude/skills/gstack/bin/gstack-config get proactive 2>/dev/null || echo "true")
|
||||||
_PROACTIVE_PROMPTED=$([ -f ~/.gstack/.proactive-prompted ] && echo "yes" || echo "no")
|
_PROACTIVE_PROMPTED=$([ -f ~/.gstack/.proactive-prompted ] && echo "yes" || echo "no")
|
||||||
_BRANCH=$(git branch --show-current 2>/dev/null || echo "unknown")
|
_BRANCH=$(git branch --show-current 2>/dev/null || echo "unknown")
|
||||||
|
|
@ -238,24 +237,6 @@ AI makes completeness near-free. Always recommend the complete option over short
|
||||||
|
|
||||||
Include `Completeness: X/10` for each option (10=all edge cases, 7=happy path, 3=shortcut).
|
Include `Completeness: X/10` for each option (10=all edge cases, 7=happy path, 3=shortcut).
|
||||||
|
|
||||||
## Contributor Mode
|
|
||||||
|
|
||||||
If `_CONTRIB` is `true`: you are in **contributor mode**. At the end of each major workflow step, rate your gstack experience 0-10. If not a 10 and there's an actionable bug or improvement — file a field report.
|
|
||||||
|
|
||||||
**File only:** gstack tooling bugs where the input was reasonable but gstack failed. **Skip:** user app bugs, network errors, auth failures on user's site.
|
|
||||||
|
|
||||||
**To file:** write `~/.gstack/contributor-logs/{slug}.md`:
|
|
||||||
```
|
|
||||||
# {Title}
|
|
||||||
**What I tried:** {action} | **What happened:** {result} | **Rating:** {0-10}
|
|
||||||
## Repro
|
|
||||||
1. {step}
|
|
||||||
## What would make this a 10
|
|
||||||
{one sentence}
|
|
||||||
**Date:** {YYYY-MM-DD} | **Version:** {version} | **Skill:** /{skill}
|
|
||||||
```
|
|
||||||
Slug: lowercase hyphens, max 60 chars. Skip if exists. Max 3/session. File inline, don't stop.
|
|
||||||
|
|
||||||
## Completion Status Protocol
|
## Completion Status Protocol
|
||||||
|
|
||||||
When completing a skill workflow, report status using one of:
|
When completing a skill workflow, report status using one of:
|
||||||
|
|
|
||||||
|
|
@ -26,7 +26,6 @@ mkdir -p ~/.gstack/sessions
|
||||||
touch ~/.gstack/sessions/"$PPID"
|
touch ~/.gstack/sessions/"$PPID"
|
||||||
_SESSIONS=$(find ~/.gstack/sessions -mmin -120 -type f 2>/dev/null | wc -l | tr -d ' ')
|
_SESSIONS=$(find ~/.gstack/sessions -mmin -120 -type f 2>/dev/null | wc -l | tr -d ' ')
|
||||||
find ~/.gstack/sessions -mmin +120 -type f -delete 2>/dev/null || true
|
find ~/.gstack/sessions -mmin +120 -type f -delete 2>/dev/null || true
|
||||||
_CONTRIB=$(~/.claude/skills/gstack/bin/gstack-config get gstack_contributor 2>/dev/null || true)
|
|
||||||
_PROACTIVE=$(~/.claude/skills/gstack/bin/gstack-config get proactive 2>/dev/null || echo "true")
|
_PROACTIVE=$(~/.claude/skills/gstack/bin/gstack-config get proactive 2>/dev/null || echo "true")
|
||||||
_PROACTIVE_PROMPTED=$([ -f ~/.gstack/.proactive-prompted ] && echo "yes" || echo "no")
|
_PROACTIVE_PROMPTED=$([ -f ~/.gstack/.proactive-prompted ] && echo "yes" || echo "no")
|
||||||
_BRANCH=$(git branch --show-current 2>/dev/null || echo "unknown")
|
_BRANCH=$(git branch --show-current 2>/dev/null || echo "unknown")
|
||||||
|
|
@ -239,24 +238,6 @@ Before building anything unfamiliar, **search first.** See `~/.claude/skills/gst
|
||||||
jq -n --arg ts "$(date -u +%Y-%m-%dT%H:%M:%SZ)" --arg skill "SKILL_NAME" --arg branch "$(git branch --show-current 2>/dev/null)" --arg insight "ONE_LINE_SUMMARY" '{ts:$ts,skill:$skill,branch:$branch,insight:$insight}' >> ~/.gstack/analytics/eureka.jsonl 2>/dev/null || true
|
jq -n --arg ts "$(date -u +%Y-%m-%dT%H:%M:%SZ)" --arg skill "SKILL_NAME" --arg branch "$(git branch --show-current 2>/dev/null)" --arg insight "ONE_LINE_SUMMARY" '{ts:$ts,skill:$skill,branch:$branch,insight:$insight}' >> ~/.gstack/analytics/eureka.jsonl 2>/dev/null || true
|
||||||
```
|
```
|
||||||
|
|
||||||
## Contributor Mode
|
|
||||||
|
|
||||||
If `_CONTRIB` is `true`: you are in **contributor mode**. At the end of each major workflow step, rate your gstack experience 0-10. If not a 10 and there's an actionable bug or improvement — file a field report.
|
|
||||||
|
|
||||||
**File only:** gstack tooling bugs where the input was reasonable but gstack failed. **Skip:** user app bugs, network errors, auth failures on user's site.
|
|
||||||
|
|
||||||
**To file:** write `~/.gstack/contributor-logs/{slug}.md`:
|
|
||||||
```
|
|
||||||
# {Title}
|
|
||||||
**What I tried:** {action} | **What happened:** {result} | **Rating:** {0-10}
|
|
||||||
## Repro
|
|
||||||
1. {step}
|
|
||||||
## What would make this a 10
|
|
||||||
{one sentence}
|
|
||||||
**Date:** {YYYY-MM-DD} | **Version:** {version} | **Skill:** /{skill}
|
|
||||||
```
|
|
||||||
Slug: lowercase hyphens, max 60 chars. Skip if exists. Max 3/session. File inline, don't stop.
|
|
||||||
|
|
||||||
## Completion Status Protocol
|
## Completion Status Protocol
|
||||||
|
|
||||||
When completing a skill workflow, report status using one of:
|
When completing a skill workflow, report status using one of:
|
||||||
|
|
|
||||||
|
|
@ -29,7 +29,6 @@ mkdir -p ~/.gstack/sessions
|
||||||
touch ~/.gstack/sessions/"$PPID"
|
touch ~/.gstack/sessions/"$PPID"
|
||||||
_SESSIONS=$(find ~/.gstack/sessions -mmin -120 -type f 2>/dev/null | wc -l | tr -d ' ')
|
_SESSIONS=$(find ~/.gstack/sessions -mmin -120 -type f 2>/dev/null | wc -l | tr -d ' ')
|
||||||
find ~/.gstack/sessions -mmin +120 -type f -delete 2>/dev/null || true
|
find ~/.gstack/sessions -mmin +120 -type f -delete 2>/dev/null || true
|
||||||
_CONTRIB=$(~/.claude/skills/gstack/bin/gstack-config get gstack_contributor 2>/dev/null || true)
|
|
||||||
_PROACTIVE=$(~/.claude/skills/gstack/bin/gstack-config get proactive 2>/dev/null || echo "true")
|
_PROACTIVE=$(~/.claude/skills/gstack/bin/gstack-config get proactive 2>/dev/null || echo "true")
|
||||||
_PROACTIVE_PROMPTED=$([ -f ~/.gstack/.proactive-prompted ] && echo "yes" || echo "no")
|
_PROACTIVE_PROMPTED=$([ -f ~/.gstack/.proactive-prompted ] && echo "yes" || echo "no")
|
||||||
_BRANCH=$(git branch --show-current 2>/dev/null || echo "unknown")
|
_BRANCH=$(git branch --show-current 2>/dev/null || echo "unknown")
|
||||||
|
|
@ -224,24 +223,6 @@ AI makes completeness near-free. Always recommend the complete option over short
|
||||||
|
|
||||||
Include `Completeness: X/10` for each option (10=all edge cases, 7=happy path, 3=shortcut).
|
Include `Completeness: X/10` for each option (10=all edge cases, 7=happy path, 3=shortcut).
|
||||||
|
|
||||||
## Contributor Mode
|
|
||||||
|
|
||||||
If `_CONTRIB` is `true`: you are in **contributor mode**. At the end of each major workflow step, rate your gstack experience 0-10. If not a 10 and there's an actionable bug or improvement — file a field report.
|
|
||||||
|
|
||||||
**File only:** gstack tooling bugs where the input was reasonable but gstack failed. **Skip:** user app bugs, network errors, auth failures on user's site.
|
|
||||||
|
|
||||||
**To file:** write `~/.gstack/contributor-logs/{slug}.md`:
|
|
||||||
```
|
|
||||||
# {Title}
|
|
||||||
**What I tried:** {action} | **What happened:** {result} | **Rating:** {0-10}
|
|
||||||
## Repro
|
|
||||||
1. {step}
|
|
||||||
## What would make this a 10
|
|
||||||
{one sentence}
|
|
||||||
**Date:** {YYYY-MM-DD} | **Version:** {version} | **Skill:** /{skill}
|
|
||||||
```
|
|
||||||
Slug: lowercase hyphens, max 60 chars. Skip if exists. Max 3/session. File inline, don't stop.
|
|
||||||
|
|
||||||
## Completion Status Protocol
|
## Completion Status Protocol
|
||||||
|
|
||||||
When completing a skill workflow, report status using one of:
|
When completing a skill workflow, report status using one of:
|
||||||
|
|
|
||||||
|
|
@ -34,7 +34,6 @@ mkdir -p ~/.gstack/sessions
|
||||||
touch ~/.gstack/sessions/"$PPID"
|
touch ~/.gstack/sessions/"$PPID"
|
||||||
_SESSIONS=$(find ~/.gstack/sessions -mmin -120 -type f 2>/dev/null | wc -l | tr -d ' ')
|
_SESSIONS=$(find ~/.gstack/sessions -mmin -120 -type f 2>/dev/null | wc -l | tr -d ' ')
|
||||||
find ~/.gstack/sessions -mmin +120 -type f -delete 2>/dev/null || true
|
find ~/.gstack/sessions -mmin +120 -type f -delete 2>/dev/null || true
|
||||||
_CONTRIB=$(~/.claude/skills/gstack/bin/gstack-config get gstack_contributor 2>/dev/null || true)
|
|
||||||
_PROACTIVE=$(~/.claude/skills/gstack/bin/gstack-config get proactive 2>/dev/null || echo "true")
|
_PROACTIVE=$(~/.claude/skills/gstack/bin/gstack-config get proactive 2>/dev/null || echo "true")
|
||||||
_PROACTIVE_PROMPTED=$([ -f ~/.gstack/.proactive-prompted ] && echo "yes" || echo "no")
|
_PROACTIVE_PROMPTED=$([ -f ~/.gstack/.proactive-prompted ] && echo "yes" || echo "no")
|
||||||
_BRANCH=$(git branch --show-current 2>/dev/null || echo "unknown")
|
_BRANCH=$(git branch --show-current 2>/dev/null || echo "unknown")
|
||||||
|
|
@ -247,24 +246,6 @@ Before building anything unfamiliar, **search first.** See `~/.claude/skills/gst
|
||||||
jq -n --arg ts "$(date -u +%Y-%m-%dT%H:%M:%SZ)" --arg skill "SKILL_NAME" --arg branch "$(git branch --show-current 2>/dev/null)" --arg insight "ONE_LINE_SUMMARY" '{ts:$ts,skill:$skill,branch:$branch,insight:$insight}' >> ~/.gstack/analytics/eureka.jsonl 2>/dev/null || true
|
jq -n --arg ts "$(date -u +%Y-%m-%dT%H:%M:%SZ)" --arg skill "SKILL_NAME" --arg branch "$(git branch --show-current 2>/dev/null)" --arg insight "ONE_LINE_SUMMARY" '{ts:$ts,skill:$skill,branch:$branch,insight:$insight}' >> ~/.gstack/analytics/eureka.jsonl 2>/dev/null || true
|
||||||
```
|
```
|
||||||
|
|
||||||
## Contributor Mode
|
|
||||||
|
|
||||||
If `_CONTRIB` is `true`: you are in **contributor mode**. At the end of each major workflow step, rate your gstack experience 0-10. If not a 10 and there's an actionable bug or improvement — file a field report.
|
|
||||||
|
|
||||||
**File only:** gstack tooling bugs where the input was reasonable but gstack failed. **Skip:** user app bugs, network errors, auth failures on user's site.
|
|
||||||
|
|
||||||
**To file:** write `~/.gstack/contributor-logs/{slug}.md`:
|
|
||||||
```
|
|
||||||
# {Title}
|
|
||||||
**What I tried:** {action} | **What happened:** {result} | **Rating:** {0-10}
|
|
||||||
## Repro
|
|
||||||
1. {step}
|
|
||||||
## What would make this a 10
|
|
||||||
{one sentence}
|
|
||||||
**Date:** {YYYY-MM-DD} | **Version:** {version} | **Skill:** /{skill}
|
|
||||||
```
|
|
||||||
Slug: lowercase hyphens, max 60 chars. Skip if exists. Max 3/session. File inline, don't stop.
|
|
||||||
|
|
||||||
## Completion Status Protocol
|
## Completion Status Protocol
|
||||||
|
|
||||||
When completing a skill workflow, report status using one of:
|
When completing a skill workflow, report status using one of:
|
||||||
|
|
|
||||||
|
|
@ -32,7 +32,6 @@ mkdir -p ~/.gstack/sessions
|
||||||
touch ~/.gstack/sessions/"$PPID"
|
touch ~/.gstack/sessions/"$PPID"
|
||||||
_SESSIONS=$(find ~/.gstack/sessions -mmin -120 -type f 2>/dev/null | wc -l | tr -d ' ')
|
_SESSIONS=$(find ~/.gstack/sessions -mmin -120 -type f 2>/dev/null | wc -l | tr -d ' ')
|
||||||
find ~/.gstack/sessions -mmin +120 -type f -delete 2>/dev/null || true
|
find ~/.gstack/sessions -mmin +120 -type f -delete 2>/dev/null || true
|
||||||
_CONTRIB=$(~/.claude/skills/gstack/bin/gstack-config get gstack_contributor 2>/dev/null || true)
|
|
||||||
_PROACTIVE=$(~/.claude/skills/gstack/bin/gstack-config get proactive 2>/dev/null || echo "true")
|
_PROACTIVE=$(~/.claude/skills/gstack/bin/gstack-config get proactive 2>/dev/null || echo "true")
|
||||||
_PROACTIVE_PROMPTED=$([ -f ~/.gstack/.proactive-prompted ] && echo "yes" || echo "no")
|
_PROACTIVE_PROMPTED=$([ -f ~/.gstack/.proactive-prompted ] && echo "yes" || echo "no")
|
||||||
_BRANCH=$(git branch --show-current 2>/dev/null || echo "unknown")
|
_BRANCH=$(git branch --show-current 2>/dev/null || echo "unknown")
|
||||||
|
|
@ -245,24 +244,6 @@ Before building anything unfamiliar, **search first.** See `~/.claude/skills/gst
|
||||||
jq -n --arg ts "$(date -u +%Y-%m-%dT%H:%M:%SZ)" --arg skill "SKILL_NAME" --arg branch "$(git branch --show-current 2>/dev/null)" --arg insight "ONE_LINE_SUMMARY" '{ts:$ts,skill:$skill,branch:$branch,insight:$insight}' >> ~/.gstack/analytics/eureka.jsonl 2>/dev/null || true
|
jq -n --arg ts "$(date -u +%Y-%m-%dT%H:%M:%SZ)" --arg skill "SKILL_NAME" --arg branch "$(git branch --show-current 2>/dev/null)" --arg insight "ONE_LINE_SUMMARY" '{ts:$ts,skill:$skill,branch:$branch,insight:$insight}' >> ~/.gstack/analytics/eureka.jsonl 2>/dev/null || true
|
||||||
```
|
```
|
||||||
|
|
||||||
## Contributor Mode
|
|
||||||
|
|
||||||
If `_CONTRIB` is `true`: you are in **contributor mode**. At the end of each major workflow step, rate your gstack experience 0-10. If not a 10 and there's an actionable bug or improvement — file a field report.
|
|
||||||
|
|
||||||
**File only:** gstack tooling bugs where the input was reasonable but gstack failed. **Skip:** user app bugs, network errors, auth failures on user's site.
|
|
||||||
|
|
||||||
**To file:** write `~/.gstack/contributor-logs/{slug}.md`:
|
|
||||||
```
|
|
||||||
# {Title}
|
|
||||||
**What I tried:** {action} | **What happened:** {result} | **Rating:** {0-10}
|
|
||||||
## Repro
|
|
||||||
1. {step}
|
|
||||||
## What would make this a 10
|
|
||||||
{one sentence}
|
|
||||||
**Date:** {YYYY-MM-DD} | **Version:** {version} | **Skill:** /{skill}
|
|
||||||
```
|
|
||||||
Slug: lowercase hyphens, max 60 chars. Skip if exists. Max 3/session. File inline, don't stop.
|
|
||||||
|
|
||||||
## Completion Status Protocol
|
## Completion Status Protocol
|
||||||
|
|
||||||
When completing a skill workflow, report status using one of:
|
When completing a skill workflow, report status using one of:
|
||||||
|
|
@ -533,7 +514,6 @@ Follow it inline, **skipping these sections** (already handled by the parent ski
|
||||||
- AskUserQuestion Format
|
- AskUserQuestion Format
|
||||||
- Completeness Principle — Boil the Lake
|
- Completeness Principle — Boil the Lake
|
||||||
- Search Before Building
|
- Search Before Building
|
||||||
- Contributor Mode
|
|
||||||
- Completion Status Protocol
|
- Completion Status Protocol
|
||||||
- Telemetry (run last)
|
- Telemetry (run last)
|
||||||
|
|
||||||
|
|
@ -569,7 +549,7 @@ If they choose A: Read the office-hours skill file from disk:
|
||||||
|
|
||||||
Follow it inline, skipping these sections (already handled by parent skill):
|
Follow it inline, skipping these sections (already handled by parent skill):
|
||||||
Preamble, AskUserQuestion Format, Completeness Principle, Search Before Building,
|
Preamble, AskUserQuestion Format, Completeness Principle, Search Before Building,
|
||||||
Contributor Mode, Completion Status Protocol, Telemetry.
|
Completion Status Protocol, Telemetry.
|
||||||
|
|
||||||
Note current Step 0A progress so you don't re-ask questions already answered.
|
Note current Step 0A progress so you don't re-ask questions already answered.
|
||||||
After completion, re-run the design doc check and resume the review.
|
After completion, re-run the design doc check and resume the review.
|
||||||
|
|
|
||||||
|
|
@ -148,7 +148,7 @@ If they choose A: Read the office-hours skill file from disk:
|
||||||
|
|
||||||
Follow it inline, skipping these sections (already handled by parent skill):
|
Follow it inline, skipping these sections (already handled by parent skill):
|
||||||
Preamble, AskUserQuestion Format, Completeness Principle, Search Before Building,
|
Preamble, AskUserQuestion Format, Completeness Principle, Search Before Building,
|
||||||
Contributor Mode, Completion Status Protocol, Telemetry.
|
Completion Status Protocol, Telemetry.
|
||||||
|
|
||||||
Note current Step 0A progress so you don't re-ask questions already answered.
|
Note current Step 0A progress so you don't re-ask questions already answered.
|
||||||
After completion, re-run the design doc check and resume the review.
|
After completion, re-run the design doc check and resume the review.
|
||||||
|
|
|
||||||
|
|
@ -30,7 +30,6 @@ mkdir -p ~/.gstack/sessions
|
||||||
touch ~/.gstack/sessions/"$PPID"
|
touch ~/.gstack/sessions/"$PPID"
|
||||||
_SESSIONS=$(find ~/.gstack/sessions -mmin -120 -type f 2>/dev/null | wc -l | tr -d ' ')
|
_SESSIONS=$(find ~/.gstack/sessions -mmin -120 -type f 2>/dev/null | wc -l | tr -d ' ')
|
||||||
find ~/.gstack/sessions -mmin +120 -type f -delete 2>/dev/null || true
|
find ~/.gstack/sessions -mmin +120 -type f -delete 2>/dev/null || true
|
||||||
_CONTRIB=$(~/.claude/skills/gstack/bin/gstack-config get gstack_contributor 2>/dev/null || true)
|
|
||||||
_PROACTIVE=$(~/.claude/skills/gstack/bin/gstack-config get proactive 2>/dev/null || echo "true")
|
_PROACTIVE=$(~/.claude/skills/gstack/bin/gstack-config get proactive 2>/dev/null || echo "true")
|
||||||
_PROACTIVE_PROMPTED=$([ -f ~/.gstack/.proactive-prompted ] && echo "yes" || echo "no")
|
_PROACTIVE_PROMPTED=$([ -f ~/.gstack/.proactive-prompted ] && echo "yes" || echo "no")
|
||||||
_BRANCH=$(git branch --show-current 2>/dev/null || echo "unknown")
|
_BRANCH=$(git branch --show-current 2>/dev/null || echo "unknown")
|
||||||
|
|
@ -243,24 +242,6 @@ Before building anything unfamiliar, **search first.** See `~/.claude/skills/gst
|
||||||
jq -n --arg ts "$(date -u +%Y-%m-%dT%H:%M:%SZ)" --arg skill "SKILL_NAME" --arg branch "$(git branch --show-current 2>/dev/null)" --arg insight "ONE_LINE_SUMMARY" '{ts:$ts,skill:$skill,branch:$branch,insight:$insight}' >> ~/.gstack/analytics/eureka.jsonl 2>/dev/null || true
|
jq -n --arg ts "$(date -u +%Y-%m-%dT%H:%M:%SZ)" --arg skill "SKILL_NAME" --arg branch "$(git branch --show-current 2>/dev/null)" --arg insight "ONE_LINE_SUMMARY" '{ts:$ts,skill:$skill,branch:$branch,insight:$insight}' >> ~/.gstack/analytics/eureka.jsonl 2>/dev/null || true
|
||||||
```
|
```
|
||||||
|
|
||||||
## Contributor Mode
|
|
||||||
|
|
||||||
If `_CONTRIB` is `true`: you are in **contributor mode**. At the end of each major workflow step, rate your gstack experience 0-10. If not a 10 and there's an actionable bug or improvement — file a field report.
|
|
||||||
|
|
||||||
**File only:** gstack tooling bugs where the input was reasonable but gstack failed. **Skip:** user app bugs, network errors, auth failures on user's site.
|
|
||||||
|
|
||||||
**To file:** write `~/.gstack/contributor-logs/{slug}.md`:
|
|
||||||
```
|
|
||||||
# {Title}
|
|
||||||
**What I tried:** {action} | **What happened:** {result} | **Rating:** {0-10}
|
|
||||||
## Repro
|
|
||||||
1. {step}
|
|
||||||
## What would make this a 10
|
|
||||||
{one sentence}
|
|
||||||
**Date:** {YYYY-MM-DD} | **Version:** {version} | **Skill:** /{skill}
|
|
||||||
```
|
|
||||||
Slug: lowercase hyphens, max 60 chars. Skip if exists. Max 3/session. File inline, don't stop.
|
|
||||||
|
|
||||||
## Completion Status Protocol
|
## Completion Status Protocol
|
||||||
|
|
||||||
When completing a skill workflow, report status using one of:
|
When completing a skill workflow, report status using one of:
|
||||||
|
|
|
||||||
|
|
@ -31,7 +31,6 @@ mkdir -p ~/.gstack/sessions
|
||||||
touch ~/.gstack/sessions/"$PPID"
|
touch ~/.gstack/sessions/"$PPID"
|
||||||
_SESSIONS=$(find ~/.gstack/sessions -mmin -120 -type f 2>/dev/null | wc -l | tr -d ' ')
|
_SESSIONS=$(find ~/.gstack/sessions -mmin -120 -type f 2>/dev/null | wc -l | tr -d ' ')
|
||||||
find ~/.gstack/sessions -mmin +120 -type f -delete 2>/dev/null || true
|
find ~/.gstack/sessions -mmin +120 -type f -delete 2>/dev/null || true
|
||||||
_CONTRIB=$(~/.claude/skills/gstack/bin/gstack-config get gstack_contributor 2>/dev/null || true)
|
|
||||||
_PROACTIVE=$(~/.claude/skills/gstack/bin/gstack-config get proactive 2>/dev/null || echo "true")
|
_PROACTIVE=$(~/.claude/skills/gstack/bin/gstack-config get proactive 2>/dev/null || echo "true")
|
||||||
_PROACTIVE_PROMPTED=$([ -f ~/.gstack/.proactive-prompted ] && echo "yes" || echo "no")
|
_PROACTIVE_PROMPTED=$([ -f ~/.gstack/.proactive-prompted ] && echo "yes" || echo "no")
|
||||||
_BRANCH=$(git branch --show-current 2>/dev/null || echo "unknown")
|
_BRANCH=$(git branch --show-current 2>/dev/null || echo "unknown")
|
||||||
|
|
@ -244,24 +243,6 @@ Before building anything unfamiliar, **search first.** See `~/.claude/skills/gst
|
||||||
jq -n --arg ts "$(date -u +%Y-%m-%dT%H:%M:%SZ)" --arg skill "SKILL_NAME" --arg branch "$(git branch --show-current 2>/dev/null)" --arg insight "ONE_LINE_SUMMARY" '{ts:$ts,skill:$skill,branch:$branch,insight:$insight}' >> ~/.gstack/analytics/eureka.jsonl 2>/dev/null || true
|
jq -n --arg ts "$(date -u +%Y-%m-%dT%H:%M:%SZ)" --arg skill "SKILL_NAME" --arg branch "$(git branch --show-current 2>/dev/null)" --arg insight "ONE_LINE_SUMMARY" '{ts:$ts,skill:$skill,branch:$branch,insight:$insight}' >> ~/.gstack/analytics/eureka.jsonl 2>/dev/null || true
|
||||||
```
|
```
|
||||||
|
|
||||||
## Contributor Mode
|
|
||||||
|
|
||||||
If `_CONTRIB` is `true`: you are in **contributor mode**. At the end of each major workflow step, rate your gstack experience 0-10. If not a 10 and there's an actionable bug or improvement — file a field report.
|
|
||||||
|
|
||||||
**File only:** gstack tooling bugs where the input was reasonable but gstack failed. **Skip:** user app bugs, network errors, auth failures on user's site.
|
|
||||||
|
|
||||||
**To file:** write `~/.gstack/contributor-logs/{slug}.md`:
|
|
||||||
```
|
|
||||||
# {Title}
|
|
||||||
**What I tried:** {action} | **What happened:** {result} | **Rating:** {0-10}
|
|
||||||
## Repro
|
|
||||||
1. {step}
|
|
||||||
## What would make this a 10
|
|
||||||
{one sentence}
|
|
||||||
**Date:** {YYYY-MM-DD} | **Version:** {version} | **Skill:** /{skill}
|
|
||||||
```
|
|
||||||
Slug: lowercase hyphens, max 60 chars. Skip if exists. Max 3/session. File inline, don't stop.
|
|
||||||
|
|
||||||
## Completion Status Protocol
|
## Completion Status Protocol
|
||||||
|
|
||||||
When completing a skill workflow, report status using one of:
|
When completing a skill workflow, report status using one of:
|
||||||
|
|
@ -443,7 +424,6 @@ Follow it inline, **skipping these sections** (already handled by the parent ski
|
||||||
- AskUserQuestion Format
|
- AskUserQuestion Format
|
||||||
- Completeness Principle — Boil the Lake
|
- Completeness Principle — Boil the Lake
|
||||||
- Search Before Building
|
- Search Before Building
|
||||||
- Contributor Mode
|
|
||||||
- Completion Status Protocol
|
- Completion Status Protocol
|
||||||
- Telemetry (run last)
|
- Telemetry (run last)
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -27,7 +27,6 @@ mkdir -p ~/.gstack/sessions
|
||||||
touch ~/.gstack/sessions/"$PPID"
|
touch ~/.gstack/sessions/"$PPID"
|
||||||
_SESSIONS=$(find ~/.gstack/sessions -mmin -120 -type f 2>/dev/null | wc -l | tr -d ' ')
|
_SESSIONS=$(find ~/.gstack/sessions -mmin -120 -type f 2>/dev/null | wc -l | tr -d ' ')
|
||||||
find ~/.gstack/sessions -mmin +120 -type f -delete 2>/dev/null || true
|
find ~/.gstack/sessions -mmin +120 -type f -delete 2>/dev/null || true
|
||||||
_CONTRIB=$(~/.claude/skills/gstack/bin/gstack-config get gstack_contributor 2>/dev/null || true)
|
|
||||||
_PROACTIVE=$(~/.claude/skills/gstack/bin/gstack-config get proactive 2>/dev/null || echo "true")
|
_PROACTIVE=$(~/.claude/skills/gstack/bin/gstack-config get proactive 2>/dev/null || echo "true")
|
||||||
_PROACTIVE_PROMPTED=$([ -f ~/.gstack/.proactive-prompted ] && echo "yes" || echo "no")
|
_PROACTIVE_PROMPTED=$([ -f ~/.gstack/.proactive-prompted ] && echo "yes" || echo "no")
|
||||||
_BRANCH=$(git branch --show-current 2>/dev/null || echo "unknown")
|
_BRANCH=$(git branch --show-current 2>/dev/null || echo "unknown")
|
||||||
|
|
@ -240,24 +239,6 @@ Before building anything unfamiliar, **search first.** See `~/.claude/skills/gst
|
||||||
jq -n --arg ts "$(date -u +%Y-%m-%dT%H:%M:%SZ)" --arg skill "SKILL_NAME" --arg branch "$(git branch --show-current 2>/dev/null)" --arg insight "ONE_LINE_SUMMARY" '{ts:$ts,skill:$skill,branch:$branch,insight:$insight}' >> ~/.gstack/analytics/eureka.jsonl 2>/dev/null || true
|
jq -n --arg ts "$(date -u +%Y-%m-%dT%H:%M:%SZ)" --arg skill "SKILL_NAME" --arg branch "$(git branch --show-current 2>/dev/null)" --arg insight "ONE_LINE_SUMMARY" '{ts:$ts,skill:$skill,branch:$branch,insight:$insight}' >> ~/.gstack/analytics/eureka.jsonl 2>/dev/null || true
|
||||||
```
|
```
|
||||||
|
|
||||||
## Contributor Mode
|
|
||||||
|
|
||||||
If `_CONTRIB` is `true`: you are in **contributor mode**. At the end of each major workflow step, rate your gstack experience 0-10. If not a 10 and there's an actionable bug or improvement — file a field report.
|
|
||||||
|
|
||||||
**File only:** gstack tooling bugs where the input was reasonable but gstack failed. **Skip:** user app bugs, network errors, auth failures on user's site.
|
|
||||||
|
|
||||||
**To file:** write `~/.gstack/contributor-logs/{slug}.md`:
|
|
||||||
```
|
|
||||||
# {Title}
|
|
||||||
**What I tried:** {action} | **What happened:** {result} | **Rating:** {0-10}
|
|
||||||
## Repro
|
|
||||||
1. {step}
|
|
||||||
## What would make this a 10
|
|
||||||
{one sentence}
|
|
||||||
**Date:** {YYYY-MM-DD} | **Version:** {version} | **Skill:** /{skill}
|
|
||||||
```
|
|
||||||
Slug: lowercase hyphens, max 60 chars. Skip if exists. Max 3/session. File inline, don't stop.
|
|
||||||
|
|
||||||
## Completion Status Protocol
|
## Completion Status Protocol
|
||||||
|
|
||||||
When completing a skill workflow, report status using one of:
|
When completing a skill workflow, report status using one of:
|
||||||
|
|
|
||||||
19
qa/SKILL.md
19
qa/SKILL.md
|
|
@ -33,7 +33,6 @@ mkdir -p ~/.gstack/sessions
|
||||||
touch ~/.gstack/sessions/"$PPID"
|
touch ~/.gstack/sessions/"$PPID"
|
||||||
_SESSIONS=$(find ~/.gstack/sessions -mmin -120 -type f 2>/dev/null | wc -l | tr -d ' ')
|
_SESSIONS=$(find ~/.gstack/sessions -mmin -120 -type f 2>/dev/null | wc -l | tr -d ' ')
|
||||||
find ~/.gstack/sessions -mmin +120 -type f -delete 2>/dev/null || true
|
find ~/.gstack/sessions -mmin +120 -type f -delete 2>/dev/null || true
|
||||||
_CONTRIB=$(~/.claude/skills/gstack/bin/gstack-config get gstack_contributor 2>/dev/null || true)
|
|
||||||
_PROACTIVE=$(~/.claude/skills/gstack/bin/gstack-config get proactive 2>/dev/null || echo "true")
|
_PROACTIVE=$(~/.claude/skills/gstack/bin/gstack-config get proactive 2>/dev/null || echo "true")
|
||||||
_PROACTIVE_PROMPTED=$([ -f ~/.gstack/.proactive-prompted ] && echo "yes" || echo "no")
|
_PROACTIVE_PROMPTED=$([ -f ~/.gstack/.proactive-prompted ] && echo "yes" || echo "no")
|
||||||
_BRANCH=$(git branch --show-current 2>/dev/null || echo "unknown")
|
_BRANCH=$(git branch --show-current 2>/dev/null || echo "unknown")
|
||||||
|
|
@ -246,24 +245,6 @@ Before building anything unfamiliar, **search first.** See `~/.claude/skills/gst
|
||||||
jq -n --arg ts "$(date -u +%Y-%m-%dT%H:%M:%SZ)" --arg skill "SKILL_NAME" --arg branch "$(git branch --show-current 2>/dev/null)" --arg insight "ONE_LINE_SUMMARY" '{ts:$ts,skill:$skill,branch:$branch,insight:$insight}' >> ~/.gstack/analytics/eureka.jsonl 2>/dev/null || true
|
jq -n --arg ts "$(date -u +%Y-%m-%dT%H:%M:%SZ)" --arg skill "SKILL_NAME" --arg branch "$(git branch --show-current 2>/dev/null)" --arg insight "ONE_LINE_SUMMARY" '{ts:$ts,skill:$skill,branch:$branch,insight:$insight}' >> ~/.gstack/analytics/eureka.jsonl 2>/dev/null || true
|
||||||
```
|
```
|
||||||
|
|
||||||
## Contributor Mode
|
|
||||||
|
|
||||||
If `_CONTRIB` is `true`: you are in **contributor mode**. At the end of each major workflow step, rate your gstack experience 0-10. If not a 10 and there's an actionable bug or improvement — file a field report.
|
|
||||||
|
|
||||||
**File only:** gstack tooling bugs where the input was reasonable but gstack failed. **Skip:** user app bugs, network errors, auth failures on user's site.
|
|
||||||
|
|
||||||
**To file:** write `~/.gstack/contributor-logs/{slug}.md`:
|
|
||||||
```
|
|
||||||
# {Title}
|
|
||||||
**What I tried:** {action} | **What happened:** {result} | **Rating:** {0-10}
|
|
||||||
## Repro
|
|
||||||
1. {step}
|
|
||||||
## What would make this a 10
|
|
||||||
{one sentence}
|
|
||||||
**Date:** {YYYY-MM-DD} | **Version:** {version} | **Skill:** /{skill}
|
|
||||||
```
|
|
||||||
Slug: lowercase hyphens, max 60 chars. Skip if exists. Max 3/session. File inline, don't stop.
|
|
||||||
|
|
||||||
## Completion Status Protocol
|
## Completion Status Protocol
|
||||||
|
|
||||||
When completing a skill workflow, report status using one of:
|
When completing a skill workflow, report status using one of:
|
||||||
|
|
|
||||||
|
|
@ -27,7 +27,6 @@ mkdir -p ~/.gstack/sessions
|
||||||
touch ~/.gstack/sessions/"$PPID"
|
touch ~/.gstack/sessions/"$PPID"
|
||||||
_SESSIONS=$(find ~/.gstack/sessions -mmin -120 -type f 2>/dev/null | wc -l | tr -d ' ')
|
_SESSIONS=$(find ~/.gstack/sessions -mmin -120 -type f 2>/dev/null | wc -l | tr -d ' ')
|
||||||
find ~/.gstack/sessions -mmin +120 -type f -delete 2>/dev/null || true
|
find ~/.gstack/sessions -mmin +120 -type f -delete 2>/dev/null || true
|
||||||
_CONTRIB=$(~/.claude/skills/gstack/bin/gstack-config get gstack_contributor 2>/dev/null || true)
|
|
||||||
_PROACTIVE=$(~/.claude/skills/gstack/bin/gstack-config get proactive 2>/dev/null || echo "true")
|
_PROACTIVE=$(~/.claude/skills/gstack/bin/gstack-config get proactive 2>/dev/null || echo "true")
|
||||||
_PROACTIVE_PROMPTED=$([ -f ~/.gstack/.proactive-prompted ] && echo "yes" || echo "no")
|
_PROACTIVE_PROMPTED=$([ -f ~/.gstack/.proactive-prompted ] && echo "yes" || echo "no")
|
||||||
_BRANCH=$(git branch --show-current 2>/dev/null || echo "unknown")
|
_BRANCH=$(git branch --show-current 2>/dev/null || echo "unknown")
|
||||||
|
|
@ -222,24 +221,6 @@ AI makes completeness near-free. Always recommend the complete option over short
|
||||||
|
|
||||||
Include `Completeness: X/10` for each option (10=all edge cases, 7=happy path, 3=shortcut).
|
Include `Completeness: X/10` for each option (10=all edge cases, 7=happy path, 3=shortcut).
|
||||||
|
|
||||||
## Contributor Mode
|
|
||||||
|
|
||||||
If `_CONTRIB` is `true`: you are in **contributor mode**. At the end of each major workflow step, rate your gstack experience 0-10. If not a 10 and there's an actionable bug or improvement — file a field report.
|
|
||||||
|
|
||||||
**File only:** gstack tooling bugs where the input was reasonable but gstack failed. **Skip:** user app bugs, network errors, auth failures on user's site.
|
|
||||||
|
|
||||||
**To file:** write `~/.gstack/contributor-logs/{slug}.md`:
|
|
||||||
```
|
|
||||||
# {Title}
|
|
||||||
**What I tried:** {action} | **What happened:** {result} | **Rating:** {0-10}
|
|
||||||
## Repro
|
|
||||||
1. {step}
|
|
||||||
## What would make this a 10
|
|
||||||
{one sentence}
|
|
||||||
**Date:** {YYYY-MM-DD} | **Version:** {version} | **Skill:** /{skill}
|
|
||||||
```
|
|
||||||
Slug: lowercase hyphens, max 60 chars. Skip if exists. Max 3/session. File inline, don't stop.
|
|
||||||
|
|
||||||
## Completion Status Protocol
|
## Completion Status Protocol
|
||||||
|
|
||||||
When completing a skill workflow, report status using one of:
|
When completing a skill workflow, report status using one of:
|
||||||
|
|
|
||||||
|
|
@ -30,7 +30,6 @@ mkdir -p ~/.gstack/sessions
|
||||||
touch ~/.gstack/sessions/"$PPID"
|
touch ~/.gstack/sessions/"$PPID"
|
||||||
_SESSIONS=$(find ~/.gstack/sessions -mmin -120 -type f 2>/dev/null | wc -l | tr -d ' ')
|
_SESSIONS=$(find ~/.gstack/sessions -mmin -120 -type f 2>/dev/null | wc -l | tr -d ' ')
|
||||||
find ~/.gstack/sessions -mmin +120 -type f -delete 2>/dev/null || true
|
find ~/.gstack/sessions -mmin +120 -type f -delete 2>/dev/null || true
|
||||||
_CONTRIB=$(~/.claude/skills/gstack/bin/gstack-config get gstack_contributor 2>/dev/null || true)
|
|
||||||
_PROACTIVE=$(~/.claude/skills/gstack/bin/gstack-config get proactive 2>/dev/null || echo "true")
|
_PROACTIVE=$(~/.claude/skills/gstack/bin/gstack-config get proactive 2>/dev/null || echo "true")
|
||||||
_PROACTIVE_PROMPTED=$([ -f ~/.gstack/.proactive-prompted ] && echo "yes" || echo "no")
|
_PROACTIVE_PROMPTED=$([ -f ~/.gstack/.proactive-prompted ] && echo "yes" || echo "no")
|
||||||
_BRANCH=$(git branch --show-current 2>/dev/null || echo "unknown")
|
_BRANCH=$(git branch --show-current 2>/dev/null || echo "unknown")
|
||||||
|
|
@ -243,24 +242,6 @@ Before building anything unfamiliar, **search first.** See `~/.claude/skills/gst
|
||||||
jq -n --arg ts "$(date -u +%Y-%m-%dT%H:%M:%SZ)" --arg skill "SKILL_NAME" --arg branch "$(git branch --show-current 2>/dev/null)" --arg insight "ONE_LINE_SUMMARY" '{ts:$ts,skill:$skill,branch:$branch,insight:$insight}' >> ~/.gstack/analytics/eureka.jsonl 2>/dev/null || true
|
jq -n --arg ts "$(date -u +%Y-%m-%dT%H:%M:%SZ)" --arg skill "SKILL_NAME" --arg branch "$(git branch --show-current 2>/dev/null)" --arg insight "ONE_LINE_SUMMARY" '{ts:$ts,skill:$skill,branch:$branch,insight:$insight}' >> ~/.gstack/analytics/eureka.jsonl 2>/dev/null || true
|
||||||
```
|
```
|
||||||
|
|
||||||
## Contributor Mode
|
|
||||||
|
|
||||||
If `_CONTRIB` is `true`: you are in **contributor mode**. At the end of each major workflow step, rate your gstack experience 0-10. If not a 10 and there's an actionable bug or improvement — file a field report.
|
|
||||||
|
|
||||||
**File only:** gstack tooling bugs where the input was reasonable but gstack failed. **Skip:** user app bugs, network errors, auth failures on user's site.
|
|
||||||
|
|
||||||
**To file:** write `~/.gstack/contributor-logs/{slug}.md`:
|
|
||||||
```
|
|
||||||
# {Title}
|
|
||||||
**What I tried:** {action} | **What happened:** {result} | **Rating:** {0-10}
|
|
||||||
## Repro
|
|
||||||
1. {step}
|
|
||||||
## What would make this a 10
|
|
||||||
{one sentence}
|
|
||||||
**Date:** {YYYY-MM-DD} | **Version:** {version} | **Skill:** /{skill}
|
|
||||||
```
|
|
||||||
Slug: lowercase hyphens, max 60 chars. Skip if exists. Max 3/session. File inline, don't stop.
|
|
||||||
|
|
||||||
## Completion Status Protocol
|
## Completion Status Protocol
|
||||||
|
|
||||||
When completing a skill workflow, report status using one of:
|
When completing a skill workflow, report status using one of:
|
||||||
|
|
|
||||||
|
|
@ -33,7 +33,6 @@ mkdir -p ~/.gstack/sessions
|
||||||
touch ~/.gstack/sessions/"$PPID"
|
touch ~/.gstack/sessions/"$PPID"
|
||||||
_SESSIONS=$(find ~/.gstack/sessions -mmin -120 -type f 2>/dev/null | wc -l | tr -d ' ')
|
_SESSIONS=$(find ~/.gstack/sessions -mmin -120 -type f 2>/dev/null | wc -l | tr -d ' ')
|
||||||
find ~/.gstack/sessions -mmin +120 -type f -delete 2>/dev/null || true
|
find ~/.gstack/sessions -mmin +120 -type f -delete 2>/dev/null || true
|
||||||
_CONTRIB=$(${ctx.paths.binDir}/gstack-config get gstack_contributor 2>/dev/null || true)
|
|
||||||
_PROACTIVE=$(${ctx.paths.binDir}/gstack-config get proactive 2>/dev/null || echo "true")
|
_PROACTIVE=$(${ctx.paths.binDir}/gstack-config get proactive 2>/dev/null || echo "true")
|
||||||
_PROACTIVE_PROMPTED=$([ -f ~/.gstack/.proactive-prompted ] && echo "yes" || echo "no")
|
_PROACTIVE_PROMPTED=$([ -f ~/.gstack/.proactive-prompted ] && echo "yes" || echo "no")
|
||||||
_BRANCH=$(git branch --show-current 2>/dev/null || echo "unknown")
|
_BRANCH=$(git branch --show-current 2>/dev/null || echo "unknown")
|
||||||
|
|
@ -323,26 +322,6 @@ jq -n --arg ts "$(date -u +%Y-%m-%dT%H:%M:%SZ)" --arg skill "SKILL_NAME" --arg b
|
||||||
\`\`\``;
|
\`\`\``;
|
||||||
}
|
}
|
||||||
|
|
||||||
function generateContributorMode(): string {
|
|
||||||
return `## Contributor Mode
|
|
||||||
|
|
||||||
If \`_CONTRIB\` is \`true\`: you are in **contributor mode**. At the end of each major workflow step, rate your gstack experience 0-10. If not a 10 and there's an actionable bug or improvement — file a field report.
|
|
||||||
|
|
||||||
**File only:** gstack tooling bugs where the input was reasonable but gstack failed. **Skip:** user app bugs, network errors, auth failures on user's site.
|
|
||||||
|
|
||||||
**To file:** write \`~/.gstack/contributor-logs/{slug}.md\`:
|
|
||||||
\`\`\`
|
|
||||||
# {Title}
|
|
||||||
**What I tried:** {action} | **What happened:** {result} | **Rating:** {0-10}
|
|
||||||
## Repro
|
|
||||||
1. {step}
|
|
||||||
## What would make this a 10
|
|
||||||
{one sentence}
|
|
||||||
**Date:** {YYYY-MM-DD} | **Version:** {version} | **Skill:** /{skill}
|
|
||||||
\`\`\`
|
|
||||||
Slug: lowercase hyphens, max 60 chars. Skip if exists. Max 3/session. File inline, don't stop.`;
|
|
||||||
}
|
|
||||||
|
|
||||||
function generateCompletionStatus(): string {
|
function generateCompletionStatus(): string {
|
||||||
return `## Completion Status Protocol
|
return `## Completion Status Protocol
|
||||||
|
|
||||||
|
|
@ -499,7 +478,7 @@ Avoid filler, throat-clearing, generic optimism, founder cosplay, and unsupporte
|
||||||
|
|
||||||
// Preamble Composition (tier → sections)
|
// Preamble Composition (tier → sections)
|
||||||
// ─────────────────────────────────────────────
|
// ─────────────────────────────────────────────
|
||||||
// T1: core + upgrade + lake + telemetry + voice(trimmed) + contributor + completion
|
// T1: core + upgrade + lake + telemetry + voice(trimmed) + completion
|
||||||
// T2: T1 + voice(full) + ask + completeness
|
// T2: T1 + voice(full) + ask + completeness
|
||||||
// T3: T2 + repo-mode + search
|
// T3: T2 + repo-mode + search
|
||||||
// T4: (same as T3 — TEST_FAILURE_TRIAGE is a separate {{}} placeholder, not preamble)
|
// T4: (same as T3 — TEST_FAILURE_TRIAGE is a separate {{}} placeholder, not preamble)
|
||||||
|
|
@ -523,7 +502,6 @@ export function generatePreamble(ctx: TemplateContext): string {
|
||||||
generateVoiceDirective(tier),
|
generateVoiceDirective(tier),
|
||||||
...(tier >= 2 ? [generateAskUserFormat(ctx), generateCompletenessSection()] : []),
|
...(tier >= 2 ? [generateAskUserFormat(ctx), generateCompletenessSection()] : []),
|
||||||
...(tier >= 3 ? [generateRepoModeSection(), generateSearchBeforeBuildingSection(ctx)] : []),
|
...(tier >= 3 ? [generateRepoModeSection(), generateSearchBeforeBuildingSection(ctx)] : []),
|
||||||
generateContributorMode(),
|
|
||||||
generateCompletionStatus(),
|
generateCompletionStatus(),
|
||||||
];
|
];
|
||||||
return sections.join('\n\n');
|
return sections.join('\n\n');
|
||||||
|
|
|
||||||
|
|
@ -240,7 +240,6 @@ Follow it inline, **skipping these sections** (already handled by the parent ski
|
||||||
- AskUserQuestion Format
|
- AskUserQuestion Format
|
||||||
- Completeness Principle — Boil the Lake
|
- Completeness Principle — Boil the Lake
|
||||||
- Search Before Building
|
- Search Before Building
|
||||||
- Contributor Mode
|
|
||||||
- Completion Status Protocol
|
- Completion Status Protocol
|
||||||
- Telemetry (run last)
|
- Telemetry (run last)
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -24,7 +24,6 @@ mkdir -p ~/.gstack/sessions
|
||||||
touch ~/.gstack/sessions/"$PPID"
|
touch ~/.gstack/sessions/"$PPID"
|
||||||
_SESSIONS=$(find ~/.gstack/sessions -mmin -120 -type f 2>/dev/null | wc -l | tr -d ' ')
|
_SESSIONS=$(find ~/.gstack/sessions -mmin -120 -type f 2>/dev/null | wc -l | tr -d ' ')
|
||||||
find ~/.gstack/sessions -mmin +120 -type f -delete 2>/dev/null || true
|
find ~/.gstack/sessions -mmin +120 -type f -delete 2>/dev/null || true
|
||||||
_CONTRIB=$(~/.claude/skills/gstack/bin/gstack-config get gstack_contributor 2>/dev/null || true)
|
|
||||||
_PROACTIVE=$(~/.claude/skills/gstack/bin/gstack-config get proactive 2>/dev/null || echo "true")
|
_PROACTIVE=$(~/.claude/skills/gstack/bin/gstack-config get proactive 2>/dev/null || echo "true")
|
||||||
_PROACTIVE_PROMPTED=$([ -f ~/.gstack/.proactive-prompted ] && echo "yes" || echo "no")
|
_PROACTIVE_PROMPTED=$([ -f ~/.gstack/.proactive-prompted ] && echo "yes" || echo "no")
|
||||||
_BRANCH=$(git branch --show-current 2>/dev/null || echo "unknown")
|
_BRANCH=$(git branch --show-current 2>/dev/null || echo "unknown")
|
||||||
|
|
@ -154,24 +153,6 @@ This only happens once. If `PROACTIVE_PROMPTED` is `yes`, skip this entirely.
|
||||||
|
|
||||||
The user always has context you don't. Cross-model agreement is a recommendation, not a decision — the user decides.
|
The user always has context you don't. Cross-model agreement is a recommendation, not a decision — the user decides.
|
||||||
|
|
||||||
## Contributor Mode
|
|
||||||
|
|
||||||
If `_CONTRIB` is `true`: you are in **contributor mode**. At the end of each major workflow step, rate your gstack experience 0-10. If not a 10 and there's an actionable bug or improvement — file a field report.
|
|
||||||
|
|
||||||
**File only:** gstack tooling bugs where the input was reasonable but gstack failed. **Skip:** user app bugs, network errors, auth failures on user's site.
|
|
||||||
|
|
||||||
**To file:** write `~/.gstack/contributor-logs/{slug}.md`:
|
|
||||||
```
|
|
||||||
# {Title}
|
|
||||||
**What I tried:** {action} | **What happened:** {result} | **Rating:** {0-10}
|
|
||||||
## Repro
|
|
||||||
1. {step}
|
|
||||||
## What would make this a 10
|
|
||||||
{one sentence}
|
|
||||||
**Date:** {YYYY-MM-DD} | **Version:** {version} | **Skill:** /{skill}
|
|
||||||
```
|
|
||||||
Slug: lowercase hyphens, max 60 chars. Skip if exists. Max 3/session. File inline, don't stop.
|
|
||||||
|
|
||||||
## Completion Status Protocol
|
## Completion Status Protocol
|
||||||
|
|
||||||
When completing a skill workflow, report status using one of:
|
When completing a skill workflow, report status using one of:
|
||||||
|
|
|
||||||
|
|
@ -30,7 +30,6 @@ mkdir -p ~/.gstack/sessions
|
||||||
touch ~/.gstack/sessions/"$PPID"
|
touch ~/.gstack/sessions/"$PPID"
|
||||||
_SESSIONS=$(find ~/.gstack/sessions -mmin -120 -type f 2>/dev/null | wc -l | tr -d ' ')
|
_SESSIONS=$(find ~/.gstack/sessions -mmin -120 -type f 2>/dev/null | wc -l | tr -d ' ')
|
||||||
find ~/.gstack/sessions -mmin +120 -type f -delete 2>/dev/null || true
|
find ~/.gstack/sessions -mmin +120 -type f -delete 2>/dev/null || true
|
||||||
_CONTRIB=$(~/.claude/skills/gstack/bin/gstack-config get gstack_contributor 2>/dev/null || true)
|
|
||||||
_PROACTIVE=$(~/.claude/skills/gstack/bin/gstack-config get proactive 2>/dev/null || echo "true")
|
_PROACTIVE=$(~/.claude/skills/gstack/bin/gstack-config get proactive 2>/dev/null || echo "true")
|
||||||
_PROACTIVE_PROMPTED=$([ -f ~/.gstack/.proactive-prompted ] && echo "yes" || echo "no")
|
_PROACTIVE_PROMPTED=$([ -f ~/.gstack/.proactive-prompted ] && echo "yes" || echo "no")
|
||||||
_BRANCH=$(git branch --show-current 2>/dev/null || echo "unknown")
|
_BRANCH=$(git branch --show-current 2>/dev/null || echo "unknown")
|
||||||
|
|
@ -225,24 +224,6 @@ AI makes completeness near-free. Always recommend the complete option over short
|
||||||
|
|
||||||
Include `Completeness: X/10` for each option (10=all edge cases, 7=happy path, 3=shortcut).
|
Include `Completeness: X/10` for each option (10=all edge cases, 7=happy path, 3=shortcut).
|
||||||
|
|
||||||
## Contributor Mode
|
|
||||||
|
|
||||||
If `_CONTRIB` is `true`: you are in **contributor mode**. At the end of each major workflow step, rate your gstack experience 0-10. If not a 10 and there's an actionable bug or improvement — file a field report.
|
|
||||||
|
|
||||||
**File only:** gstack tooling bugs where the input was reasonable but gstack failed. **Skip:** user app bugs, network errors, auth failures on user's site.
|
|
||||||
|
|
||||||
**To file:** write `~/.gstack/contributor-logs/{slug}.md`:
|
|
||||||
```
|
|
||||||
# {Title}
|
|
||||||
**What I tried:** {action} | **What happened:** {result} | **Rating:** {0-10}
|
|
||||||
## Repro
|
|
||||||
1. {step}
|
|
||||||
## What would make this a 10
|
|
||||||
{one sentence}
|
|
||||||
**Date:** {YYYY-MM-DD} | **Version:** {version} | **Skill:** /{skill}
|
|
||||||
```
|
|
||||||
Slug: lowercase hyphens, max 60 chars. Skip if exists. Max 3/session. File inline, don't stop.
|
|
||||||
|
|
||||||
## Completion Status Protocol
|
## Completion Status Protocol
|
||||||
|
|
||||||
When completing a skill workflow, report status using one of:
|
When completing a skill workflow, report status using one of:
|
||||||
|
|
|
||||||
|
|
@ -28,7 +28,6 @@ mkdir -p ~/.gstack/sessions
|
||||||
touch ~/.gstack/sessions/"$PPID"
|
touch ~/.gstack/sessions/"$PPID"
|
||||||
_SESSIONS=$(find ~/.gstack/sessions -mmin -120 -type f 2>/dev/null | wc -l | tr -d ' ')
|
_SESSIONS=$(find ~/.gstack/sessions -mmin -120 -type f 2>/dev/null | wc -l | tr -d ' ')
|
||||||
find ~/.gstack/sessions -mmin +120 -type f -delete 2>/dev/null || true
|
find ~/.gstack/sessions -mmin +120 -type f -delete 2>/dev/null || true
|
||||||
_CONTRIB=$(~/.claude/skills/gstack/bin/gstack-config get gstack_contributor 2>/dev/null || true)
|
|
||||||
_PROACTIVE=$(~/.claude/skills/gstack/bin/gstack-config get proactive 2>/dev/null || echo "true")
|
_PROACTIVE=$(~/.claude/skills/gstack/bin/gstack-config get proactive 2>/dev/null || echo "true")
|
||||||
_PROACTIVE_PROMPTED=$([ -f ~/.gstack/.proactive-prompted ] && echo "yes" || echo "no")
|
_PROACTIVE_PROMPTED=$([ -f ~/.gstack/.proactive-prompted ] && echo "yes" || echo "no")
|
||||||
_BRANCH=$(git branch --show-current 2>/dev/null || echo "unknown")
|
_BRANCH=$(git branch --show-current 2>/dev/null || echo "unknown")
|
||||||
|
|
@ -241,24 +240,6 @@ Before building anything unfamiliar, **search first.** See `~/.claude/skills/gst
|
||||||
jq -n --arg ts "$(date -u +%Y-%m-%dT%H:%M:%SZ)" --arg skill "SKILL_NAME" --arg branch "$(git branch --show-current 2>/dev/null)" --arg insight "ONE_LINE_SUMMARY" '{ts:$ts,skill:$skill,branch:$branch,insight:$insight}' >> ~/.gstack/analytics/eureka.jsonl 2>/dev/null || true
|
jq -n --arg ts "$(date -u +%Y-%m-%dT%H:%M:%SZ)" --arg skill "SKILL_NAME" --arg branch "$(git branch --show-current 2>/dev/null)" --arg insight "ONE_LINE_SUMMARY" '{ts:$ts,skill:$skill,branch:$branch,insight:$insight}' >> ~/.gstack/analytics/eureka.jsonl 2>/dev/null || true
|
||||||
```
|
```
|
||||||
|
|
||||||
## Contributor Mode
|
|
||||||
|
|
||||||
If `_CONTRIB` is `true`: you are in **contributor mode**. At the end of each major workflow step, rate your gstack experience 0-10. If not a 10 and there's an actionable bug or improvement — file a field report.
|
|
||||||
|
|
||||||
**File only:** gstack tooling bugs where the input was reasonable but gstack failed. **Skip:** user app bugs, network errors, auth failures on user's site.
|
|
||||||
|
|
||||||
**To file:** write `~/.gstack/contributor-logs/{slug}.md`:
|
|
||||||
```
|
|
||||||
# {Title}
|
|
||||||
**What I tried:** {action} | **What happened:** {result} | **Rating:** {0-10}
|
|
||||||
## Repro
|
|
||||||
1. {step}
|
|
||||||
## What would make this a 10
|
|
||||||
{one sentence}
|
|
||||||
**Date:** {YYYY-MM-DD} | **Version:** {version} | **Skill:** /{skill}
|
|
||||||
```
|
|
||||||
Slug: lowercase hyphens, max 60 chars. Skip if exists. Max 3/session. File inline, don't stop.
|
|
||||||
|
|
||||||
## Completion Status Protocol
|
## Completion Status Protocol
|
||||||
|
|
||||||
When completing a skill workflow, report status using one of:
|
When completing a skill workflow, report status using one of:
|
||||||
|
|
|
||||||
|
|
@ -213,11 +213,11 @@ describe('gen-skill-docs', () => {
|
||||||
expect(browseTmpl).toContain('{{PREAMBLE}}');
|
expect(browseTmpl).toContain('{{PREAMBLE}}');
|
||||||
});
|
});
|
||||||
|
|
||||||
test('generated SKILL.md contains contributor mode check', () => {
|
test('generated SKILL.md contains no contributor mode (removed)', () => {
|
||||||
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('Contributor Mode');
|
expect(content).not.toContain('Contributor Mode');
|
||||||
expect(content).toContain('gstack_contributor');
|
expect(content).not.toContain('gstack_contributor');
|
||||||
expect(content).toContain('contributor-logs');
|
expect(content).not.toContain('contributor-logs');
|
||||||
});
|
});
|
||||||
|
|
||||||
test('generated SKILL.md contains session awareness', () => {
|
test('generated SKILL.md contains session awareness', () => {
|
||||||
|
|
|
||||||
|
|
@ -41,7 +41,6 @@ export const E2E_TOUCHFILES: Record<string, string[]> = {
|
||||||
'skillmd-no-local-binary': ['SKILL.md', 'SKILL.md.tmpl', 'scripts/gen-skill-docs.ts'],
|
'skillmd-no-local-binary': ['SKILL.md', 'SKILL.md.tmpl', 'scripts/gen-skill-docs.ts'],
|
||||||
'skillmd-outside-git': ['SKILL.md', 'SKILL.md.tmpl', 'scripts/gen-skill-docs.ts'],
|
'skillmd-outside-git': ['SKILL.md', 'SKILL.md.tmpl', 'scripts/gen-skill-docs.ts'],
|
||||||
|
|
||||||
'contributor-mode': ['SKILL.md.tmpl', 'scripts/gen-skill-docs.ts'],
|
|
||||||
'session-awareness': ['SKILL.md', 'SKILL.md.tmpl', 'scripts/gen-skill-docs.ts'],
|
'session-awareness': ['SKILL.md', 'SKILL.md.tmpl', 'scripts/gen-skill-docs.ts'],
|
||||||
|
|
||||||
// QA (+ test-server dependency)
|
// QA (+ test-server dependency)
|
||||||
|
|
@ -182,7 +181,6 @@ export const E2E_TIERS: Record<string, 'gate' | 'periodic'> = {
|
||||||
'skillmd-setup-discovery': 'gate',
|
'skillmd-setup-discovery': 'gate',
|
||||||
'skillmd-no-local-binary': 'gate',
|
'skillmd-no-local-binary': 'gate',
|
||||||
'skillmd-outside-git': 'gate',
|
'skillmd-outside-git': 'gate',
|
||||||
'contributor-mode': 'gate',
|
|
||||||
'session-awareness': 'gate',
|
'session-awareness': 'gate',
|
||||||
|
|
||||||
// QA — gate for functional, periodic for quality/benchmarks
|
// QA — gate for functional, periodic for quality/benchmarks
|
||||||
|
|
|
||||||
|
|
@ -177,51 +177,6 @@ Report the exact output — either "READY: <path>" or "NEEDS_SETUP".`,
|
||||||
try { fs.rmSync(nonGitDir, { recursive: true, force: true }); } catch {}
|
try { fs.rmSync(nonGitDir, { recursive: true, force: true }); } catch {}
|
||||||
}, 60_000);
|
}, 60_000);
|
||||||
|
|
||||||
testConcurrentIfSelected('contributor-mode', async () => {
|
|
||||||
const contribDir = fs.mkdtempSync(path.join(os.tmpdir(), 'skill-e2e-contrib-'));
|
|
||||||
const logsDir = path.join(contribDir, 'contributor-logs');
|
|
||||||
fs.mkdirSync(logsDir, { recursive: true });
|
|
||||||
|
|
||||||
const result = await runSkillTest({
|
|
||||||
prompt: `You are in contributor mode (gstack_contributor=true). You just ran this browse command and it failed:
|
|
||||||
|
|
||||||
$ /nonexistent/browse goto https://example.com
|
|
||||||
/nonexistent/browse: No such file or directory
|
|
||||||
|
|
||||||
Per the contributor mode instructions, file a field report to ${logsDir}/browse-missing-binary.md using the Write tool. Include all required sections: title, what you tried, what happened, rating, repro steps, raw output, what would make it a 10, and the date/version footer.`,
|
|
||||||
workingDirectory: contribDir,
|
|
||||||
maxTurns: 5,
|
|
||||||
timeout: 30_000,
|
|
||||||
testName: 'contributor-mode',
|
|
||||||
runId,
|
|
||||||
});
|
|
||||||
|
|
||||||
logCost('contributor mode', result);
|
|
||||||
// Override passed: this test intentionally triggers a browse error (nonexistent binary)
|
|
||||||
// so browseErrors will be non-empty — that's expected, not a failure
|
|
||||||
recordE2E(evalCollector, 'contributor mode report', 'Skill E2E tests', result, {
|
|
||||||
passed: result.exitReason === 'success',
|
|
||||||
});
|
|
||||||
|
|
||||||
// Verify a contributor log was created with expected format
|
|
||||||
const logFiles = fs.readdirSync(logsDir).filter(f => f.endsWith('.md'));
|
|
||||||
expect(logFiles.length).toBeGreaterThan(0);
|
|
||||||
|
|
||||||
// Verify report has key structural sections (agent may phrase differently)
|
|
||||||
const logContent = fs.readFileSync(path.join(logsDir, logFiles[0]), 'utf-8');
|
|
||||||
// Must have a title (# heading)
|
|
||||||
expect(logContent).toMatch(/^#\s/m);
|
|
||||||
// Must mention the failed command or browse
|
|
||||||
expect(logContent).toMatch(/browse|nonexistent|not found|no such file/i);
|
|
||||||
// Must have some kind of rating
|
|
||||||
expect(logContent).toMatch(/rating|\/10/i);
|
|
||||||
// Must have steps or reproduction info
|
|
||||||
expect(logContent).toMatch(/step|repro|reproduce/i);
|
|
||||||
|
|
||||||
// Clean up
|
|
||||||
try { fs.rmSync(contribDir, { recursive: true, force: true }); } catch {}
|
|
||||||
}, 90_000);
|
|
||||||
|
|
||||||
testConcurrentIfSelected('session-awareness', async () => {
|
testConcurrentIfSelected('session-awareness', async () => {
|
||||||
const sessionDir = fs.mkdtempSync(path.join(os.tmpdir(), 'skill-e2e-session-'));
|
const sessionDir = fs.mkdtempSync(path.join(os.tmpdir(), 'skill-e2e-session-'));
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -325,62 +325,6 @@ Report the exact output — either "READY: <path>" or "NEEDS_SETUP".`,
|
||||||
try { fs.rmSync(nonGitDir, { recursive: true, force: true }); } catch {}
|
try { fs.rmSync(nonGitDir, { recursive: true, force: true }); } catch {}
|
||||||
}, 60_000);
|
}, 60_000);
|
||||||
|
|
||||||
testIfSelected('contributor-mode', async () => {
|
|
||||||
const contribDir = fs.mkdtempSync(path.join(os.tmpdir(), 'skill-e2e-contrib-'));
|
|
||||||
const logsDir = path.join(contribDir, 'contributor-logs');
|
|
||||||
fs.mkdirSync(logsDir, { recursive: true });
|
|
||||||
|
|
||||||
// Extract contributor mode instructions from generated SKILL.md
|
|
||||||
const skillMd = fs.readFileSync(path.join(ROOT, 'SKILL.md'), 'utf-8');
|
|
||||||
const contribStart = skillMd.indexOf('## Contributor Mode');
|
|
||||||
const contribEnd = skillMd.indexOf('\n## ', contribStart + 1);
|
|
||||||
const contribBlock = skillMd.slice(contribStart, contribEnd > 0 ? contribEnd : undefined);
|
|
||||||
|
|
||||||
const result = await runSkillTest({
|
|
||||||
prompt: `You are in contributor mode (_CONTRIB=true).
|
|
||||||
|
|
||||||
${contribBlock}
|
|
||||||
|
|
||||||
OVERRIDE: Write contributor logs to ${logsDir}/ instead of ~/.gstack/contributor-logs/
|
|
||||||
|
|
||||||
Now try this browse command (it will fail — there is no binary at this path):
|
|
||||||
/nonexistent/path/browse goto https://example.com
|
|
||||||
|
|
||||||
This is a gstack issue (the browse binary is missing/misconfigured).
|
|
||||||
File a contributor report about this issue. Then tell me what you filed.`,
|
|
||||||
workingDirectory: contribDir,
|
|
||||||
maxTurns: 8,
|
|
||||||
timeout: 60_000,
|
|
||||||
testName: 'contributor-mode',
|
|
||||||
runId,
|
|
||||||
});
|
|
||||||
|
|
||||||
logCost('contributor mode', result);
|
|
||||||
// Override passed: this test intentionally triggers a browse error (nonexistent binary)
|
|
||||||
// so browseErrors will be non-empty — that's expected, not a failure
|
|
||||||
recordE2E('contributor mode report', 'Skill E2E tests', result, {
|
|
||||||
passed: result.exitReason === 'success',
|
|
||||||
});
|
|
||||||
|
|
||||||
// Verify a contributor log was created with expected format
|
|
||||||
const logFiles = fs.readdirSync(logsDir).filter(f => f.endsWith('.md'));
|
|
||||||
expect(logFiles.length).toBeGreaterThan(0);
|
|
||||||
|
|
||||||
// Verify new reflection-based format
|
|
||||||
const logContent = fs.readFileSync(path.join(logsDir, logFiles[0]), 'utf-8');
|
|
||||||
expect(logContent).toContain('Hey gstack team');
|
|
||||||
expect(logContent).toContain('What I was trying to do');
|
|
||||||
expect(logContent).toContain('What happened instead');
|
|
||||||
expect(logContent).toMatch(/rating/i);
|
|
||||||
// Verify report has repro steps (agent may use "Steps to reproduce", "Repro Steps", etc.)
|
|
||||||
expect(logContent).toMatch(/repro|steps to reproduce|how to reproduce/i);
|
|
||||||
// Verify report has date/version footer (agent may format differently)
|
|
||||||
expect(logContent).toMatch(/date.*2026|2026.*date/i);
|
|
||||||
|
|
||||||
// Clean up
|
|
||||||
try { fs.rmSync(contribDir, { recursive: true, force: true }); } catch {}
|
|
||||||
}, 90_000);
|
|
||||||
|
|
||||||
testIfSelected('session-awareness', async () => {
|
testIfSelected('session-awareness', async () => {
|
||||||
const sessionDir = fs.mkdtempSync(path.join(os.tmpdir(), 'skill-e2e-session-'));
|
const sessionDir = fs.mkdtempSync(path.join(os.tmpdir(), 'skill-e2e-session-'));
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue