mirror of
https://github.com/garrytan/gstack.git
synced 2026-09-25 22:30:48 +02:00
* feat: bind shared-code review advice to source and branch * feat: add shared-code extraction audit and scoped review checks * test: recognize complete source reads and explicit coverage legends * chore: bump version and changelog (v1.88.0.0) Co-Authored-By: OpenAI Codex <noreply@openai.com> * test: capture native review questions and retain public evidence Capture the actual first public native question with strict ownership and display matching. Preserve terminal failures and raw evidence, and retain SDK completion checks. * test: recognize verified review evidence and complete fixtures Recognize complete source and diagram evidence, concrete design and developer-experience decisions, and the complete planted scenario contracts. Preserve negative controls and grading thresholds. * fix: preserve decision brief structure in native questions Keep the required pros-and-cons heading and final Net field in native question text. Regenerate host outputs and document the release and evaluation repairs. Co-Authored-By: OpenAI Codex <noreply@openai.com> * docs: update project documentation for v1.88.0.0 Co-Authored-By: OpenAI Codex <noreply@openai.com> * fix: correct eval retry accounting and ship workflow gates * fix: capture native eval evidence and stabilize CI fixtures * fix: keep shared-code eval skips read-only Choose explicit no-change answers instead of mixed fix/preservation options. Reuse the bounded revalidation prompt for path fixtures so required review metadata is available without repeated discovery. Preserve source checks, retry limits, and failed native terminal outcomes. Add captured-question and callback regressions, plus evaluation selection coverage for the affected fixtures. --------- Co-authored-by: OpenAI Codex <noreply@openai.com>
102 lines
6.5 KiB
Cheetah
102 lines
6.5 KiB
Cheetah
---
|
|
name: gstack
|
|
preamble-tier: 1
|
|
version: 1.2.0
|
|
description: |
|
|
Router for the gstack skill suite. Sends any gstack request to the right skill
|
|
(planning, review, QA, shipping, debugging, docs, security, design). For browser/QA
|
|
and dogfooding it points you at /browse. Use when you invoke gstack without a specific
|
|
skill, or ask "which gstack skill fits this?". (gstack)
|
|
allowed-tools:
|
|
- Bash
|
|
- Read
|
|
- AskUserQuestion
|
|
triggers:
|
|
- gstack
|
|
- which gstack skill
|
|
- route this with gstack
|
|
|
|
---
|
|
|
|
{{PREAMBLE}}
|
|
|
|
## Route first
|
|
|
|
This is the gstack router. Its one job is to send the request to the right skill.
|
|
|
|
1. If the request is about a browser, QA, dogfooding, screenshots, or inspecting a page
|
|
(open a site, test a deploy, take a screenshot, check a flow visually) → invoke `/browse`.
|
|
Every gstack browser skill (`/browse`, `/qa`, `/qa-only`, `/design-review`, `/canary`,
|
|
`/benchmark`, `/scrape`) drives the Aside browser first — the user's real browser with
|
|
their real logged-in sessions — and falls back to gstack's own browser when Aside is not
|
|
installed or not running. Route "open the browser" / "import cookies" requests to the
|
|
fallback-browser skills below only when the user is clearly on that path (Linux,
|
|
Windows, or Aside closed); on Aside there is nothing to open or import.
|
|
2. Otherwise, route by the rules below. If nothing matches, answer directly.
|
|
|
|
Best-effort, record which way you routed (never block on it). Set `ROUTE_OUTCOME` to
|
|
`browse` (sent to /browse), `routed` (sent to another skill), or `direct` (answered
|
|
directly, no skill matched):
|
|
```bash
|
|
~/.claude/skills/gstack/bin/gstack-telemetry-log --event-type route --skill gstack --outcome ROUTE_OUTCOME --session-id "$_SESSION_ID" 2>/dev/null || true
|
|
```
|
|
|
|
If `PROACTIVE` is `false`: do NOT proactively invoke or suggest other gstack skills during
|
|
this session. Only run skills the user explicitly invokes. This preference persists across
|
|
sessions via `gstack-config`.
|
|
|
|
If `PROACTIVE` is `true` (default): **invoke the Skill tool** when the user's request
|
|
matches a skill's purpose. Do NOT answer directly when a skill exists for the task.
|
|
Use the Skill tool to invoke it. The skill has specialized workflows, checklists, and
|
|
quality gates that produce better results than answering inline.
|
|
|
|
**Routing rules — when you see these patterns, INVOKE the skill via the Skill tool:**
|
|
- User describes a new idea, asks "is this worth building", brainstorms, pitches a concept → invoke `/office-hours`
|
|
- User asks to spec something out, file an issue, write up a ticket, "turn this into a GitHub issue", "backlog item" → invoke `/spec`
|
|
- User asks about strategy, scope, ambition, "think bigger", "what should we build" → invoke `/plan-ceo-review`
|
|
- User asks to review architecture, lock in the plan, "does this design make sense" → invoke `/plan-eng-review`
|
|
- User asks about design system, brand, visual identity, "how should this look" → invoke `/design-consultation`
|
|
- User asks to review design of a plan → invoke `/plan-design-review`
|
|
- User asks about developer experience of a plan, API/CLI/SDK design → invoke `/plan-devex-review`
|
|
- User wants all reviews done automatically, "review everything" → invoke `/autoplan`
|
|
- User reports a bug, error, broken behavior, "why is this broken", "this doesn't work", "wtf", "something's wrong" → invoke `/investigate`
|
|
- User asks to test the site, find bugs, QA, "does this work", "check the deploy" → invoke `/qa`
|
|
- User asks to just report bugs without fixing → invoke `/qa-only`
|
|
- User asks to review code, check the diff, pre-landing review, "look at my changes" → invoke `/review`
|
|
- User asks to find code worth sharing, shared-code extractions, or duplication worth consolidating → invoke `/deslop-shared-libs`
|
|
- User asks about visual polish, design audit of a live site, "this looks off" → invoke `/design-review`
|
|
- User asks to audit the live developer experience, time-to-hello-world → invoke `/devex-review`
|
|
- User asks to ship, deploy, push, create a PR, "let's land this", "send it" → invoke `/ship`
|
|
- User asks to merge + deploy + verify as one flow → invoke `/land-and-deploy`
|
|
- User asks to configure deployment for the project → invoke `/setup-deploy`
|
|
- User asks to monitor prod after shipping, post-deploy checks → invoke `/canary`
|
|
- User asks to update docs after shipping → invoke `/document-release`
|
|
- User asks to write docs from scratch, generate documentation, "document this feature/module" → invoke `/document-generate`
|
|
- User asks for a weekly retro, what did we ship, "how'd we do" → invoke `/retro`
|
|
{{OUTSIDE_VOICE_ROUTING}}
|
|
- User asks for safety mode, careful mode → invoke `/careful` or `/guard`
|
|
- User asks to restrict edits to a directory → invoke `/freeze` or `/unfreeze`
|
|
- User asks to upgrade gstack → invoke `/gstack-upgrade`
|
|
- User asks to save progress, checkpoint, "save my work" → invoke `/context-save`
|
|
- User asks to resume, restore, "where was I" → invoke `/context-restore`
|
|
- User asks about security, OWASP, vulnerabilities, "is this secure" → invoke `/cso`
|
|
- User asks to make a PDF, document, publication → invoke `/make-pdf`
|
|
- User asks to pull data off a web page, "grab the table from", "extract the prices" → invoke `/scrape`
|
|
- User asks to launch a real browser for QA, "open the browser" → invoke `/open-gstack-browser` (fallback browser; on Aside the tabs are already visible)
|
|
- User asks to import cookies for authenticated testing → invoke `/setup-browser-cookies` (fallback browser; Aside already has the sessions)
|
|
- User asks to share the browser with another agent, "pair OpenClaw/Codex with my browser" → invoke `/pair-agent` (fallback browser)
|
|
- User asks to codify or save the last `/scrape` as a reusable skill → invoke `/skillify` (fallback browser)
|
|
- User asks about page speed, performance regression, benchmarks → invoke `/benchmark`
|
|
- User asks what gstack has learned, "show learnings" → invoke `/learn`
|
|
- User asks to tune question sensitivity, "stop asking me that" → invoke `/plan-tune`
|
|
- User asks for code quality dashboard, "health check" → invoke `/health`
|
|
|
|
**When in doubt, invoke the skill.** A false positive (invoking a skill that wasn't
|
|
needed) is cheaper than a false negative (answering ad-hoc when a structured workflow
|
|
exists). The skill provides multi-step workflows, checklists, and quality gates that
|
|
always produce better results than an ad-hoc answer. If no skill matches, answer
|
|
directly as usual.
|
|
|
|
If the user opts out of suggestions, run `gstack-config set proactive false`.
|
|
If they opt back in, run `gstack-config set proactive true`.
|