* enhance(#3085): add Grep to allowed-tools for 21 skills
29 of 71 skills omit Grep from allowed-tools, forcing Bash grep for
structured search instead of the dedicated tool. Adds Grep to the
21-skill subset confirmed safe in prior review (excludes the 6
gsd-ns-* dispatchers, gsd-help, and gsd-surface, which have no
plausible structured-search need).
Hand-edits commands/gsd/*.md only; skills/*/SKILL.md is regenerated
via `npm run gen:plugin-skills` from that source. Updates the one
hardcoded copilot-install test assertion affected by gsd-health's
new tool order.
* chore(#3085): backfill changeset PR number
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
* test(#2618): assert the Needs clause on the structured field, not the path-length-dependent bullet
The bullet embeds the todo file's ABSOLUTE path, so its total length
varies by runner tmpdir: on macOS CI, /private/var/folders/… plus the
test harness's gsd-test-run-* wrapper pushed the full bullet to 244
chars — past renderPendingTodoBullet's intended 240-char cap, whose
documented first degradation step drops the Needs clause. The product
behavior is correct (#2618 design); the assertion was runner-dependent.
The extraction is now pinned on json.todos[0].needs; the rendered-bullet
shape stays covered by the path-independent title assertion and the
renderer's own unit rows.
Found blocking #4186's CI on the macOS shard (test landed 30 minutes
earlier in b7406b293f / PR #4384).
---------
Co-authored-by: sim <sim@local>
Co-authored-by: Claude Sonnet 5 <noreply@anthropic.com>
58 lines
2.4 KiB
Markdown
58 lines
2.4 KiB
Markdown
---
|
|
name: gsd:config
|
|
description: Configure GSD settings — workflow toggles, advanced knobs, integrations, and model profile
|
|
argument-hint: "[--advanced | --integrations | --profile <name>]"
|
|
allowed-tools:
|
|
- Read
|
|
- Write
|
|
- Bash
|
|
- Grep
|
|
- AskUserQuestion
|
|
requires: [code-review, review, settings]
|
|
---
|
|
|
|
<objective>
|
|
Configure GSD settings interactively with a single consolidated command.
|
|
|
|
Mode routing:
|
|
- **default** (no flag): Common-case toggles (model, research, plan_check, verifier, branching) → settings workflow
|
|
- **--advanced**: Power-user knobs (planning tuning, timeouts, branch templates, cross-AI execution) → settings-advanced workflow
|
|
- **--integrations**: Third-party API keys, code-review CLI routing, agent-skill injection → settings-integrations workflow
|
|
- **--profile <name>**: Switch model profile (quality|balanced|budget|inherit) → set-profile (inline)
|
|
</objective>
|
|
|
|
<routing>
|
|
|
|
| Flag | Action | Workflow |
|
|
|------|--------|----------|
|
|
| (none) | Interactive 5-question common-case config prompt | settings |
|
|
| --advanced | Power-user knobs: planning, execution, discussion, cross-AI, git, runtime | settings-advanced |
|
|
| --integrations | API keys (Brave/Firecrawl/Exa), review CLI routing, agent skills | settings-integrations |
|
|
| --profile <name> | Switch model profile without interactive prompt | gsd-tools query config-set-model-profile |
|
|
|
|
</routing>
|
|
|
|
<execution_context>
|
|
@~/.claude/gsd-core/workflows/settings.md
|
|
@~/.claude/gsd-core/workflows/settings-advanced.md
|
|
@~/.claude/gsd-core/workflows/settings-integrations.md
|
|
</execution_context>
|
|
|
|
<context>
|
|
Arguments: $ARGUMENTS
|
|
|
|
Parse the first token of $ARGUMENTS:
|
|
- If it is `--advanced`: strip the flag, execute settings-advanced workflow
|
|
- If it is `--integrations`: strip the flag, execute settings-integrations workflow
|
|
- If it starts with `--profile`: extract the profile name (remainder after `--profile`), then:
|
|
1. Verify `gsd-tools` is on PATH via `command -v gsd-tools`; if absent, emit the install hint `Install GSD via 'npm i -g @opengsd/gsd-core'` and stop.
|
|
2. Run: `gsd-tools query config-set-model-profile <profile-name> --raw` and display the output verbatim.
|
|
- Otherwise: execute settings workflow (no argument needed)
|
|
</context>
|
|
|
|
<process>
|
|
1. Parse the leading flag (if any) from $ARGUMENTS.
|
|
2. Load and execute the appropriate workflow end-to-end, or run the inline SDK command for --profile.
|
|
3. Preserve all workflow gates from the target workflow.
|
|
</process>
|