Skip to content

[stripe agent setup] Surface skills status in setup flows#1757

Merged
gusnguyen-stripe merged 7 commits into
masterfrom
gusnguyen/agent-setup-skills-status
Jul 9, 2026
Merged

[stripe agent setup] Surface skills status in setup flows#1757
gusnguyen-stripe merged 7 commits into
masterfrom
gusnguyen/agent-setup-skills-status

Conversation

@gusnguyen-stripe

@gusnguyen-stripe gusnguyen-stripe commented Jul 8, 2026

Copy link
Copy Markdown
Contributor

Reviewers

r? @jleong-stripe
cc @stripe/developer-products

Summary

Wires agentskills.Check() into stripe agent setup so skills status appears in --status, --json, and the interactive TUI, and supports updating already-installed skills.

What it does

Skills status — adds local and global skills checks for flows that display skills:

  • --status shows installation state (but hide the other one to discourage installing in both)
image
  • --json includes skills status and planned skills actions
  • Interactive TUI shows skills installation status
image

Skills update flow — uses freshness checks before installing:

  • Skips installation when skills are already current unless --force is passed
  • Returns install/update counts from installSkills for JSON output

Interactive TUI — improves skills presentation for humans at a terminal:

  • Pre-selects the skills row when outdated skills are detected
image
  • Defaults the scope prompt toward the directory that needs install/update
image
  • Labels local/global scope choices with their resolved paths and current status
image image

Stack

PR 2 of 4. Depends on #1749.


Stack created with GitHub Stacks CLIGive Feedback 💬

@gusnguyen-stripe gusnguyen-stripe changed the title Surface skills status in agent setup flows. [stripe agent setup] Surface skills status in setup flows Jul 8, 2026
@gusnguyen-stripe gusnguyen-stripe marked this pull request as ready for review July 8, 2026 22:39
@gusnguyen-stripe gusnguyen-stripe requested a review from a team as a code owner July 8, 2026 22:39
Compare installed skill files against the remote index by SHA256 hash,
with parallel remote fetches capped for docs.stripe.com requests.

Co-authored-by: Cursor <cursoragent@cursor.com>
Committed-By-Agent: cursor
@gusnguyen-stripe gusnguyen-stripe force-pushed the gusnguyen/agent-setup-skills-status branch from 679486a to ac5e3aa Compare July 8, 2026 22:39
@gusnguyen-stripe gusnguyen-stripe force-pushed the gusnguyen/update-skills branch from 01057ab to 05d7e9d Compare July 8, 2026 22:39
Collapse partial into out_of_date at the source so no downstream code
reasons about a state the CLI never surfaces.

Co-authored-by: Cursor <cursoragent@cursor.com>
Committed-By-Agent: cursor
@gusnguyen-stripe gusnguyen-stripe force-pushed the gusnguyen/agent-setup-skills-status branch from ac5e3aa to 6844551 Compare July 8, 2026 23:02
Comment thread pkg/cmd/agent_setup_tui.go
Answers review feedback: on a per-file fetch failure we intentionally
bias toward update (idempotent, non-destructive) rather than reporting
the skill as current, which could hide real drift.

Co-authored-by: Cursor <cursoragent@cursor.com>
Committed-By-Agent: cursor
@gusnguyen-stripe gusnguyen-stripe force-pushed the gusnguyen/agent-setup-skills-status branch from 1e3049f to 07f0f0d Compare July 9, 2026 18:16
gusnguyen-stripe and others added 4 commits July 9, 2026 11:17
Each file-check goroutine records its result in outcomes and always
returns nil, so the errgroup error is intentionally discarded.

Co-authored-by: Cursor <cursoragent@cursor.com>
Committed-By-Agent: cursor
Show local and global skills state in --status, --json, and the
interactive TUI, and support updating already-installed skills.

Co-authored-by: Cursor <cursoragent@cursor.com>
Committed-By-Agent: cursor
Follows the removal of the partial status: simplify skillsScopeNeedsUpdate
and the status renderers, and delete skillsNeedsAction/skillsScopeNeedsAction
which had no call sites.

Co-authored-by: Cursor <cursoragent@cursor.com>
Committed-By-Agent: cursor
Co-authored-by: Cursor <cursoragent@cursor.com>
Committed-By-Agent: cursor
@gusnguyen-stripe gusnguyen-stripe force-pushed the gusnguyen/agent-setup-skills-status branch from 07f0f0d to 4e2215b Compare July 9, 2026 18:21
Base automatically changed from gusnguyen/update-skills to master July 9, 2026 19:11
@gusnguyen-stripe gusnguyen-stripe merged commit 2e908e0 into master Jul 9, 2026
20 checks passed
@gusnguyen-stripe gusnguyen-stripe deleted the gusnguyen/agent-setup-skills-status branch July 9, 2026 19:11
gusnguyen-stripe added a commit that referenced this pull request Jul 9, 2026
### Reviewers
r? @jleong-stripe  
cc @stripe/developer-products

### Summary

Refines when and how `stripe agent setup` fetches skills status so
plugin-only non-interactive paths stay fast, errors fail open, and
plugin status takes priority in `--status` output.

### What it does

**Plugin-only paths** — keeps non-interactive plugin setup independent
from skills checks:
- `stripe agent setup --client <id>` does not fetch skills status
- Calling-agent plugin setup does not fetch skills status (optimize for
latency)
- `--status`, `--json`, and interactive mode still fetch skills status
because they display it

**Fail open** — skills check errors do not block status or TUI flows;
errors are surfaced in output instead of aborting setup.

**Status ordering** — when agents are detected, `--status` shows plugin
status before skills status.

### Stack

PR 3 of 4. Depends on #1757.

---
<sub>Stack created with <a
href="https://github.com/github/gh-stack">GitHub Stacks CLI</a> • <a
href="https://gh.io/stacks-feedback">Give Feedback 💬</a></sub>

---------

Co-authored-by: Cursor <cursoragent@cursor.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants