Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .agents/skills/gstack-autoplan/agents/openai.yaml
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
interface:
display_name: "gstack-autoplan"
short_description: "Auto-review pipeline — reads the full CEO, design, and eng review skills from disk and runs them sequentially with..."
short_description: ""
default_prompt: "Use gstack-autoplan for this task."
policy:
allow_implicit_invocation: true
2 changes: 1 addition & 1 deletion .agents/skills/gstack-benchmark/agents/openai.yaml
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
interface:
display_name: "gstack-benchmark"
short_description: "Performance regression detection using the browse daemon. Establishes baselines for page load times, Core Web..."
short_description: ""
default_prompt: "Use gstack-benchmark for this task."
policy:
allow_implicit_invocation: true
2 changes: 1 addition & 1 deletion .agents/skills/gstack-browse/agents/openai.yaml
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
interface:
display_name: "gstack-browse"
short_description: "Fast headless browser for QA testing and site dogfooding. Navigate any URL, interact with elements, verify page..."
short_description: ""
default_prompt: "Use gstack-browse for this task."
policy:
allow_implicit_invocation: true
2 changes: 1 addition & 1 deletion .agents/skills/gstack-canary/agents/openai.yaml
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
interface:
display_name: "gstack-canary"
short_description: "Post-deploy canary monitoring. Watches the live app for console errors, performance regressions, and page failures..."
short_description: ""
default_prompt: "Use gstack-canary for this task."
policy:
allow_implicit_invocation: true
2 changes: 1 addition & 1 deletion .agents/skills/gstack-careful/agents/openai.yaml
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
interface:
display_name: "gstack-careful"
short_description: "Safety guardrails for destructive commands. Warns before rm -rf, DROP TABLE, force-push, git reset --hard, kubectl..."
short_description: ""
default_prompt: "Use gstack-careful for this task."
policy:
allow_implicit_invocation: true
6 changes: 6 additions & 0 deletions .agents/skills/gstack-connect-chrome/SKILL.md
Original file line number Diff line number Diff line change
@@ -1,11 +1,17 @@
---
name: connect-chrome
version: 0.1.0
description: |
Launch real Chrome controlled by gstack with the Side Panel extension auto-loaded.
One command: connects Claude to a visible Chrome window where you can watch every
action in real time. The extension shows a live activity feed in the Side Panel.
Use when asked to "connect chrome", "open chrome", "real browser", "launch chrome",
"side panel", or "control my browser".
allowed-tools:
- Bash
- Read
- AskUserQuestion

---
<!-- AUTO-GENERATED from SKILL.md.tmpl — do not edit directly -->
<!-- Regenerate: bun run gen:skill-docs -->
Expand Down
2 changes: 1 addition & 1 deletion .agents/skills/gstack-cso/agents/openai.yaml
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
interface:
display_name: "gstack-cso"
short_description: "Chief Security Officer mode. Infrastructure-first security audit: secrets archaeology, dependency supply chain,..."
short_description: ""
default_prompt: "Use gstack-cso for this task."
policy:
allow_implicit_invocation: true
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
interface:
display_name: "gstack-design-consultation"
short_description: "Design consultation: understands your product, researches the landscape, proposes a complete design system..."
short_description: ""
default_prompt: "Use gstack-design-consultation for this task."
policy:
allow_implicit_invocation: true
2 changes: 1 addition & 1 deletion .agents/skills/gstack-design-review/agents/openai.yaml
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
interface:
display_name: "gstack-design-review"
short_description: "Designer's eye QA: finds visual inconsistency, spacing issues, hierarchy problems, AI slop patterns, and slow..."
short_description: ""
default_prompt: "Use gstack-design-review for this task."
policy:
allow_implicit_invocation: true
2 changes: 1 addition & 1 deletion .agents/skills/gstack-document-release/agents/openai.yaml
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
interface:
display_name: "gstack-document-release"
short_description: "Post-ship documentation update. Reads all project docs, cross-references the diff, updates..."
short_description: ""
default_prompt: "Use gstack-document-release for this task."
policy:
allow_implicit_invocation: true
2 changes: 1 addition & 1 deletion .agents/skills/gstack-freeze/agents/openai.yaml
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
interface:
display_name: "gstack-freeze"
short_description: "Restrict file edits to a specific directory for the session. Blocks Edit and Write outside the allowed path. Use..."
short_description: ""
default_prompt: "Use gstack-freeze for this task."
policy:
allow_implicit_invocation: true
2 changes: 1 addition & 1 deletion .agents/skills/gstack-guard/agents/openai.yaml
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
interface:
display_name: "gstack-guard"
short_description: "Full safety mode: destructive command warnings + directory-scoped edits. Combines /careful (warns before rm -rf,..."
short_description: ""
default_prompt: "Use gstack-guard for this task."
policy:
allow_implicit_invocation: true
2 changes: 1 addition & 1 deletion .agents/skills/gstack-investigate/agents/openai.yaml
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
interface:
display_name: "gstack-investigate"
short_description: "Systematic debugging with root cause investigation. Four phases: investigate, analyze, hypothesize, implement. Iron..."
short_description: ""
default_prompt: "Use gstack-investigate for this task."
policy:
allow_implicit_invocation: true
2 changes: 1 addition & 1 deletion .agents/skills/gstack-land-and-deploy/agents/openai.yaml
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
interface:
display_name: "gstack-land-and-deploy"
short_description: "Land and deploy workflow. Merges the PR, waits for CI and deploy, verifies production health via canary checks...."
short_description: ""
default_prompt: "Use gstack-land-and-deploy for this task."
policy:
allow_implicit_invocation: true
2 changes: 1 addition & 1 deletion .agents/skills/gstack-office-hours/agents/openai.yaml
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
interface:
display_name: "gstack-office-hours"
short_description: "YC Office Hours — two modes. Startup mode: six forcing questions that expose demand reality, status quo, desperate..."
short_description: ""
default_prompt: "Use gstack-office-hours for this task."
policy:
allow_implicit_invocation: true
2 changes: 1 addition & 1 deletion .agents/skills/gstack-plan-ceo-review/agents/openai.yaml
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
interface:
display_name: "gstack-plan-ceo-review"
short_description: "CEO/founder-mode plan review. Rethink the problem, find the 10-star product, challenge premises, expand scope when..."
short_description: ""
default_prompt: "Use gstack-plan-ceo-review for this task."
policy:
allow_implicit_invocation: true
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
interface:
display_name: "gstack-plan-design-review"
short_description: "Designer's eye plan review — interactive, like CEO and Eng review. Rates each design dimension 0-10, explains what..."
short_description: ""
default_prompt: "Use gstack-plan-design-review for this task."
policy:
allow_implicit_invocation: true
2 changes: 1 addition & 1 deletion .agents/skills/gstack-plan-eng-review/agents/openai.yaml
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
interface:
display_name: "gstack-plan-eng-review"
short_description: "Eng manager-mode plan review. Lock in the execution plan — architecture, data flow, diagrams, edge cases, test..."
short_description: ""
default_prompt: "Use gstack-plan-eng-review for this task."
policy:
allow_implicit_invocation: true
2 changes: 1 addition & 1 deletion .agents/skills/gstack-qa-only/agents/openai.yaml
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
interface:
display_name: "gstack-qa-only"
short_description: "Report-only QA testing. Systematically tests a web application and produces a structured report with health score,..."
short_description: ""
default_prompt: "Use gstack-qa-only for this task."
policy:
allow_implicit_invocation: true
2 changes: 1 addition & 1 deletion .agents/skills/gstack-qa/agents/openai.yaml
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
interface:
display_name: "gstack-qa"
short_description: "Systematically QA test a web application and fix bugs found. Runs QA testing, then iteratively fixes bugs in source..."
short_description: ""
default_prompt: "Use gstack-qa for this task."
policy:
allow_implicit_invocation: true
2 changes: 1 addition & 1 deletion .agents/skills/gstack-retro/agents/openai.yaml
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
interface:
display_name: "gstack-retro"
short_description: "Weekly engineering retrospective. Analyzes commit history, work patterns, and code quality metrics with persistent..."
short_description: ""
default_prompt: "Use gstack-retro for this task."
policy:
allow_implicit_invocation: true
2 changes: 1 addition & 1 deletion .agents/skills/gstack-review/agents/openai.yaml
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
interface:
display_name: "gstack-review"
short_description: "Pre-landing PR review. Analyzes diff against the base branch for SQL safety, LLM trust boundary violations,..."
short_description: ""
default_prompt: "Use gstack-review for this task."
policy:
allow_implicit_invocation: true
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
interface:
display_name: "gstack-setup-browser-cookies"
short_description: "Import cookies from your real Chromium browser into the headless browse session. Opens an interactive picker UI..."
short_description: ""
default_prompt: "Use gstack-setup-browser-cookies for this task."
policy:
allow_implicit_invocation: true
2 changes: 1 addition & 1 deletion .agents/skills/gstack-setup-deploy/agents/openai.yaml
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
interface:
display_name: "gstack-setup-deploy"
short_description: "Configure deployment settings for /land-and-deploy. Detects your deploy platform (Fly.io, Render, Vercel, Netlify,..."
short_description: ""
default_prompt: "Use gstack-setup-deploy for this task."
policy:
allow_implicit_invocation: true
2 changes: 1 addition & 1 deletion .agents/skills/gstack-ship/agents/openai.yaml
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
interface:
display_name: "gstack-ship"
short_description: "Ship workflow: detect + merge base branch, run tests, review diff, bump VERSION, update CHANGELOG, commit, push,..."
short_description: ""
default_prompt: "Use gstack-ship for this task."
policy:
allow_implicit_invocation: true
2 changes: 1 addition & 1 deletion .agents/skills/gstack-unfreeze/agents/openai.yaml
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
interface:
display_name: "gstack-unfreeze"
short_description: "Clear the freeze boundary set by /freeze, allowing edits to all directories again. Use when you want to widen edit..."
short_description: ""
default_prompt: "Use gstack-unfreeze for this task."
policy:
allow_implicit_invocation: true
2 changes: 1 addition & 1 deletion .agents/skills/gstack-upgrade/agents/openai.yaml
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
interface:
display_name: "gstack-upgrade"
short_description: "Upgrade gstack to the latest version. Detects global vs vendored install, runs the upgrade, and shows what's new...."
short_description: ""
default_prompt: "Use gstack-upgrade for this task."
policy:
allow_implicit_invocation: true
2 changes: 1 addition & 1 deletion .agents/skills/gstack/agents/openai.yaml
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
interface:
display_name: "gstack"
short_description: "Fast headless browser for QA testing and site dogfooding. Navigate pages, interact with elements, verify state, diff..."
short_description: ""
default_prompt: "Use gstack for this task."
policy:
allow_implicit_invocation: true
2 changes: 1 addition & 1 deletion SKILL.md
Original file line number Diff line number Diff line change
Expand Up @@ -44,7 +44,7 @@ _SESSION_ID="$$-$(date +%s)"
echo "TELEMETRY: ${_TEL:-off}"
echo "TEL_PROMPTED: $_TEL_PROMPTED"
mkdir -p ~/.gstack/analytics
echo '{"skill":"gstack","ts":"'$(date -u +%Y-%m-%dT%H:%M:%SZ)'","repo":"'$(basename "$(git rev-parse --show-toplevel 2>/dev/null)" 2>/dev/null || echo "unknown")'"}' >> ~/.gstack/analytics/skill-usage.jsonl 2>/dev/null || true
echo '{"skill":"gstack-contrib","ts":"'$(date -u +%Y-%m-%dT%H:%M:%SZ)'","repo":"'$(basename "$(git rev-parse --show-toplevel 2>/dev/null)" 2>/dev/null || echo "unknown")'"}' >> ~/.gstack/analytics/skill-usage.jsonl 2>/dev/null || true
# zsh-compatible: use find instead of glob to avoid NOMATCH error
for _PF in $(find ~/.gstack/analytics -maxdepth 1 -name '.pending-*' 2>/dev/null); do [ -f "$_PF" ] && ~/.claude/skills/gstack/bin/gstack-telemetry-log --event-type skill_run --skill _pending_finalize --outcome unknown --session-id "$_SESSION_ID" 2>/dev/null || true; break; done
```
Expand Down
Binary file added browse/test/fixtures/test-cookies-linux.db
Binary file not shown.
Binary file added browse/test/fixtures/test-cookies.db
Binary file not shown.
46 changes: 36 additions & 10 deletions design-consultation/SKILL.md
Original file line number Diff line number Diff line change
Expand Up @@ -463,14 +463,25 @@ Use AskUserQuestion:

If user chooses B, skip this step and continue.

**Check Codex availability:**
**Detect available second-opinion provider:**
```bash
which codex 2>/dev/null && echo "CODEX_AVAILABLE" || echo "CODEX_NOT_AVAILABLE"
SECOND_OPINION_BIN=""
SECOND_OPINION_PROVIDER=""
if which codex 2>/dev/null; then
SECOND_OPINION_BIN="codex"
SECOND_OPINION_PROVIDER="Codex"
elif which gemini 2>/dev/null; then
SECOND_OPINION_BIN="gemini"
SECOND_OPINION_PROVIDER="Gemini"
fi
echo "${SECOND_OPINION_PROVIDER:-NONE}_AVAILABLE"
```

**If Codex is available**, launch both voices simultaneously:
**If a provider is available**, launch both voices simultaneously:

1. **Cross-model design voice** (via Bash):

1. **Codex design voice** (via Bash):
**If Codex:**
```bash
TMPERR_DESIGN=$(mktemp /tmp/codex-design-XXXXXXXX)
_REPO_ROOT=$(git rev-parse --show-toplevel) || { echo "ERROR: not in a git repo" >&2; exit 1; }
Expand All @@ -484,6 +495,21 @@ codex exec "Given this product context, propose a complete design direction:

Be opinionated. Be specific. Do not hedge. This is YOUR design direction — own it." -C "$_REPO_ROOT" -s read-only -c 'model_reasoning_effort="medium"' --enable web_search_cached 2>"$TMPERR_DESIGN"
```

**If Gemini:**
```bash
TMPERR_DESIGN=$(mktemp /tmp/gemini-design-XXXXXXXX)
gemini --prompt "Given this product context, propose a complete design direction:
- Visual thesis: one sentence describing mood, material, and energy
- Typography: specific font names (not defaults — no Inter/Roboto/Arial/system) + hex colors
- Color system: CSS variables for background, surface, primary text, muted text, accent
- Layout: composition-first, not component-first. First viewport as poster, not document
- Differentiation: 2 deliberate departures from category norms
- Anti-slop: no purple gradients, no 3-column icon grids, no centered everything, no decorative blobs

Be opinionated. Be specific. Do not hedge. This is YOUR design direction — own it." 2>"$TMPERR_DESIGN"
```

Use a 5-minute timeout (`timeout: 300000`). After the command completes, read stderr:
```bash
cat "$TMPERR_DESIGN" && rm -f "$TMPERR_DESIGN"
Expand All @@ -499,13 +525,13 @@ Dispatch a subagent with this prompt:
Be bold. Be specific. No hedging."

**Error handling (all non-blocking):**
- **Auth failure:** If stderr contains "auth", "login", "unauthorized", or "API key": "Codex authentication failed. Run `codex login` to authenticate."
- **Timeout:** "Codex timed out after 5 minutes."
- **Empty response:** "Codex returned no response."
- On any Codex error: proceed with Claude subagent output only, tagged `[single-model]`.
- **Auth failure:** If stderr contains "auth", "login", "unauthorized", or "API key": "[Provider] authentication failed. Run \`codex login\` or \`gemini\` to authenticate."
- **Timeout:** "[Provider] timed out after 5 minutes."
- **Empty response:** "[Provider] returned no response."
- On any provider error: proceed with Claude subagent output only, tagged `[single-model]`.
- If Claude subagent also fails: "Outside voices unavailable — continuing with primary review."

Present Codex output under a `CODEX SAYS (design direction):` header.
Present cross-model output under a `{PROVIDER} SAYS (design direction):` header (substituting Codex or Gemini).
Present subagent output under a `CLAUDE SUBAGENT (design direction):` header.

**Synthesis:** Claude main references both Codex and subagent proposals in the Phase 3 proposal. Present:
Expand All @@ -517,7 +543,7 @@ Present subagent output under a `CLAUDE SUBAGENT (design direction):` header.
```bash
~/.claude/skills/gstack/bin/gstack-review-log '{"skill":"design-outside-voices","timestamp":"'"$(date -u +%Y-%m-%dT%H:%M:%SZ)"'","status":"STATUS","source":"SOURCE","commit":"'"$(git rev-parse --short HEAD)"'"}'
```
Replace STATUS with "clean" or "issues_found", SOURCE with "codex+subagent", "codex-only", "subagent-only", or "unavailable".
Replace STATUS with "clean" or "issues_found", SOURCE with "codex+subagent", "gemini+subagent", "codex-only", "gemini-only", "subagent-only", or "unavailable".

## Phase 3: The Complete Proposal

Expand Down
Loading