fo-progress
Show an app's screen × gate matrix — spec version, plan state and open approvals, generation stages, each gate's result with staleness against the current tree hash, deferred review clusters — and the next command per screen; computed by fo-progress-report. Use any time to see where every screen stands.
- License 许可
- MIT
- 最近更新
- 2026-11-11
- Stars
- ★ 2
- Forks
- 0
01 前言 Front Matter
- name
- fo-progress
- description
- Show an app's screen × gate matrix — spec version, plan state and open approvals, generation stages, each gate's result with staleness against the current tree hash, deferred review clusters — and the next command per screen; computed by fo-progress-report. Use any time to see where every screen stands.
- allowed-tools
- Read, Glob, Grep, Bash
- argument-hint
- [--app <name>] [--screen <id>] [--blocked]
- user-invocable
- true
02 资源文件 6
- 参考文档catalog.json2.0 KB
- 资产文件logo.png192.6 KB
- 脚本scripts/request.py10.6 KB
- 脚本scripts/requirements.txt500 B
- 参考文档SOURCE.md324 B
- 参考文档TRUST.auto.yaml2.0 KB
03 SKILL.md 正文
fo-progress — where every screen stands
No agent and no writes: fo-progress-report reads progress.json, the manifests, plans, generation
state and evidence files, recomputes each screen's tree hash and prints JSON; this skill renders it.
Step 1 — Compute
fo-progress-report --app <app> [--screen <id>]
Under delta legacy tracking (legacySource.tracking: "delta") also run fo-legacy-drift --app <app>.
It is read-only and uses the last fetched state of the baseline branch. A drifted screen it reports
that the tracker does not yet mark (legacyStale) still belongs in the blocked list, as "V2 source
moved since <from> (n commits) → fo-analyze". To refresh and record, the user runs
fo-legacy-drift --app <app> --fetch --record; this skill writes nothing.
Step 2 — Render
A table per app, one row per screen (spec version and status · plan version/approved/pending
approvals · gen stage · verify · visual · e2e · contract · seo · designer · planning · next), using
these marks: ✓ pass, ✗ fail/partial, ○ not run yet, ◌ skipped/not-run with reason, ⟳ stale
(evidence recorded against different content — the gate must run again, the earlier result is not
wrong). Then:
- Blocked: from
summary.blocked[]— pending approvals (count andplan.firstOpenApproval), stale plans (against the spec, or behind the legacy analysis), drifted V2 sources, deferred review clusters (review.clustersDeferred), gatesskipped/not-runwith theirreason, stale gates. - Next: the
nextcommand per screen, grouped (ready forfo-gen, waiting on approval, in gates…). - With
--blocked, only the blocked section.
fo-progress does not advance anything. When the user asks "what should I do next", answer from
the next column and name the command; when they ask why a gate is ⟳, explain the tree hash.
Done when the table and the blocked list are shown.
04 同仓库更多 Skills
hp-shared
Shared conventions for every homepage-plugin agent and skill — stack, code conventions, state-file writes, check commands and how to report them. Preloaded into agents through their `skills:` frontmatter; not meant to be invoked by hand.
fe-shared
Shared conventions for every frontend-react-plugin agent and skill — code conventions, state files and locks, accepted deviations, design principles, build working directory, router-mode command matrix, TypeScript check. Preloaded into agents through their `skills:` frontmatter; not meant to be invoked by hand.
be-spring-shared
Shared conventions for every backend-springboot-plugin agent and skill — tech stack, CQRS architecture, naming, coding standards, TDD, commit and build rules, state files. Preloaded into agents through their `skills:` frontmatter; not meant to be invoked by hand.
pp-translate
Use after directly editing the working language spec to sync changes to other supported languages.
pp-sync-stitch
Use when wireframes were manually edited on the Stitch website and need to be re-fetched to the local project.
pp-sync-notion
Use when a specification needs to be published or re-synced to Notion after finalization or manual edits.