Not in the top 1,000 by GitHub stars
antonailog/forge-skills
Forge — 文档驱动的 AI 辅助开发框架 | Document-driven AI development framework with 16 Skills covering brainstorm → PRD → design → engineering → QA → review → ship → retrospective
History
Review weekly changes to SKILL.md before updating. Dates mark the weeks in which we observed each version; checks apply to the recorded commits.
View weekly changes
SKILL.md
Week of Nov 2, 2026 · Line counts unavailable
Before Not checked yet → After Network or broad shell
First observation → 0955ca04f426
No earlier version was observed for comparison.
_archive/2026-07-04-forge-deliver-retired/SKILL.md
Week of Nov 2, 2026 · Line counts unavailable
Before Not checked yet → After Network or broad shell
First observation → 0955ca04f426
No earlier version was observed for comparison.
_archive/snapshots/2026-10-10-feature-doc/forge-bugfix/SKILL.md
Week of Nov 2, 2026 · Line counts unavailable
Before Not checked yet → After Network or broad shell
First observation → 0955ca04f426
No earlier version was observed for comparison.
_archive/snapshots/2026-10-10-feature-doc/forge-design/SKILL.md
Week of Nov 2, 2026 · Line counts unavailable
Before Not checked yet → After Instructions only
First observation → 0955ca04f426
No earlier version was observed for comparison.
_archive/snapshots/2026-10-10-feature-doc/forge-design-lab/SKILL.md
Week of Nov 2, 2026 · Line counts unavailable
Before Not checked yet → After Instructions only
First observation → 0955ca04f426
No earlier version was observed for comparison.
_archive/snapshots/2026-10-10-feature-doc/forge-eng/SKILL.md
Week of Nov 2, 2026 · Line counts unavailable
Before Not checked yet → After Instructions only
First observation → 0955ca04f426
No earlier version was observed for comparison.
_archive/snapshots/2026-10-10-feature-doc/forge-prd/SKILL.md
Week of Nov 2, 2026 · Line counts unavailable
Before Not checked yet → After Instructions only
First observation → 0955ca04f426
No earlier version was observed for comparison.
_archive/snapshots/2026-10-10-feature-doc/forge-review/SKILL.md
Week of Nov 2, 2026 · Line counts unavailable
Before Not checked yet → After Network or broad shell
First observation → 0955ca04f426
No earlier version was observed for comparison.
_archive/snapshots/2026-10-10-feature-doc/forge-ship/SKILL.md
Week of Nov 2, 2026 · Line counts unavailable
Before Not checked yet → After Network or broad shell
First observation → 0955ca04f426
No earlier version was observed for comparison.
_archive/snapshots/2026-10-26-defensive-design/forge-design/SKILL.md
Week of Nov 2, 2026 · Line counts unavailable
Before Not checked yet → After Local scripts
First observation → 0955ca04f426
No earlier version was observed for comparison.
_archive/snapshots/2026-10-26-defensive-design/forge-prd/SKILL.md
Week of Nov 2, 2026 · Line counts unavailable
Before Not checked yet → After Instructions only
First observation → 0955ca04f426
No earlier version was observed for comparison.
skills/forge-brainstorm/SKILL.md
Week of Nov 2, 2026 · Line counts unavailable
Before Not checked yet → After Instructions only
First observation → 0955ca04f426
No earlier version was observed for comparison.
skills/forge-bugfix/SKILL.md
Week of Nov 2, 2026 · Line counts unavailable
Before Not checked yet → After Network or broad shell
First observation → 0955ca04f426
No earlier version was observed for comparison.
skills/forge-design/SKILL.md
Week of Nov 2, 2026 · Line counts unavailable
Before Not checked yet → After Local scripts
First observation → 0955ca04f426
No earlier version was observed for comparison.
skills/forge-design-impl/SKILL.md
Week of Nov 2, 2026 · Line counts unavailable
Before Not checked yet → After Instructions only
First observation → 0955ca04f426
No earlier version was observed for comparison.
skills/forge-design-lab/SKILL.md
Week of Nov 2, 2026 · Line counts unavailable
Before Not checked yet → After Local scripts
First observation → 0955ca04f426
No earlier version was observed for comparison.
skills/forge-dev/SKILL.md
Week of Nov 2, 2026 · Line counts unavailable
Before Not checked yet → After Instructions only
First observation → 0955ca04f426
No earlier version was observed for comparison.
skills/forge-doc-policy/SKILL.md
Week of Nov 2, 2026 · Line counts unavailable
Before Not checked yet → After Local scripts
First observation → 0955ca04f426
No earlier version was observed for comparison.
skills/forge-doc-release/SKILL.md
Week of Nov 2, 2026 · Line counts unavailable
Before Not checked yet → After Network or broad shell
First observation → 0955ca04f426
No earlier version was observed for comparison.
skills/forge-eng/SKILL.md
Week of Nov 2, 2026 · Line counts unavailable
Before Not checked yet → After Network or broad shell
First observation → 0955ca04f426
No earlier version was observed for comparison.
skills/forge-feature-doc/SKILL.md
Week of Nov 2, 2026 · Line counts unavailable
Before Not checked yet → After Local scripts
First observation → 0955ca04f426
No earlier version was observed for comparison.
skills/forge-fupan/SKILL.md
Week of Nov 2, 2026 · Line counts unavailable
Before Not checked yet → After Network or broad shell
First observation → 0955ca04f426
No earlier version was observed for comparison.
skills/forge-prd/SKILL.md
Week of Nov 2, 2026 · Line counts unavailable
Before Not checked yet → After Instructions only
First observation → 0955ca04f426
No earlier version was observed for comparison.
skills/forge-qa/SKILL.md
Week of Nov 2, 2026 · Line counts unavailable
Before Not checked yet → After Network or broad shell
First observation → 0955ca04f426
No earlier version was observed for comparison.
skills/forge-review/SKILL.md
Week of Nov 2, 2026 · Line counts unavailable
Before Not checked yet → After Network or broad shell
First observation → 0955ca04f426
No earlier version was observed for comparison.
skills/forge-ship/SKILL.md
Week of Nov 2, 2026 · Line counts unavailable
Before Not checked yet → After Network or broad shell
First observation → 0955ca04f426
No earlier version was observed for comparison.
skills/forge-status/SKILL.md
Week of Nov 2, 2026 · Line counts unavailable
Before Not checked yet → After Network or broad shell
First observation → 0955ca04f426
No earlier version was observed for comparison.
Heat
1.7- Star growth, last 7 daysNot available
- Star growth, last 24 hoursNot available
- Rank movement, last 7 daysNot available
- Commits, last 30 daysNot available
- Accounts asking about it through MCP, last 7 daysNot available
- Hot votes this weekNot available
Heat never changes the order by stars, and sponsorship never touches it. How heat works
Stars over time
30-day change not yet available: not enough history.
Individual skills in this repository
- forge
/ - forge-deliver
_archive/2026-07-04-forge-deliver-retired - forge-bugfix
_archive/snapshots/2026-10-10-feature-doc/forge-bugfix - forge-design
_archive/snapshots/2026-10-10-feature-doc/forge-design - forge-design-lab
_archive/snapshots/2026-10-10-feature-doc/forge-design-lab - forge-eng
_archive/snapshots/2026-10-10-feature-doc/forge-eng - forge-prd
_archive/snapshots/2026-10-10-feature-doc/forge-prd - forge-review
_archive/snapshots/2026-10-10-feature-doc/forge-review - forge-ship
_archive/snapshots/2026-10-10-feature-doc/forge-ship - forge-design
_archive/snapshots/2026-10-26-defensive-design/forge-design - forge-prd
_archive/snapshots/2026-10-26-defensive-design/forge-prd - forge-brainstorm
skills/forge-brainstorm - forge-bugfix
skills/forge-bugfix - forge-design
skills/forge-design - forge-design-impl
skills/forge-design-impl - forge-design-lab
skills/forge-design-lab - forge-dev
skills/forge-dev - forge-doc-policy
skills/forge-doc-policy - forge-doc-release
skills/forge-doc-release - forge-eng
skills/forge-eng - forge-feature-doc
skills/forge-feature-doc - forge-fupan
skills/forge-fupan - forge-prd
skills/forge-prd - forge-qa
skills/forge-qa - forge-review
skills/forge-review - forge-ship
skills/forge-ship - forge-status
skills/forge-status
How it works
forge
When your agent uses it
Forge 工作流总入口。只读检测项目状态,推荐下一步该用哪个 skill,自己不干活。触发方式:用户说"forge"、"下一步"、"接下来做什么"。
What it loads into context
Frontmatter
55 tokensAlways available to the agent
SKILL.md
2,171 tokensWhen the skill is activated
Reference documents
278,885 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- 执行流程
- Forge 体系完整 Skill 清单
- 重要规则
Scripts executed separately
_archive/snapshots/2026-09-20-design-lab/workbench-original/tokens_build.py_archive/snapshots/2026-09-20-design-lab/workbench-original/workbench.jsevals/forge-design-lab/impl/run_impl_eval.pyevals/forge-design-lab/run_trigger_eval.pyevals/forge-design-lab/system/run_system_eval.pyevals/forge-feature-doc/run_trigger_eval.pyevals/forge-feature-doc/score_doc.pyexamples/pomodoro/shots/codex-delegate/timer-core-head.jsinstall.shskills/_shared/generate_image2.pytools/fupan-workbench/__init__.pytools/fupan-workbench/frontend/package.jsontools/fupan-workbench/frontend/src/main.jsxtools/fupan-workbench/frontend/vite.config.jstools/fupan-workbench/launcher.pytools/fupan-workbench/markdown_reader.pytools/fupan-workbench/review_index.pytools/fupan-workbench/server.pytools/fupan-workbench/static/assets/index-DffckMrb.jstools/fupan-workbench/task_store.pytools/fupan-workbench/tests/test_review_index.pytools/fupan-workbench/tests/test_task_store.py
Files
.gitignoreasset112 bytesCHANGELOG.mddoc32,948 bytesLICENSEasset1,068 bytesREADME.mddoc40,883 bytesSKILL.mdcore7,251 bytesSKILL.mdcore7,251 bytesSKILL.mdcore7,251 bytesSKILL.mdcore7,251 bytesTODO.mddoc10,375 bytes_archive/CHANGELOG.mddoc8,534 bytes_archive/PRD.mddoc10,215 bytes_archive/README-v1.mddoc2,602 bytes_archive/document-driven-dev-guide-original.mddoc15,882 bytes_archive/snapshots/2026-09-20-design-lab/README.mddoc1,385 bytes_archive/snapshots/2026-09-20-design-lab/forge-design-SKILL.mddoc13,320 bytes_archive/snapshots/2026-09-20-design-lab/visual-decision-layer.mddoc7,334 bytes_archive/snapshots/2026-09-20-design-lab/workbench-original/tokens_build.pyruns1,822 bytes_archive/snapshots/2026-09-20-design-lab/workbench-original/workbench.cssasset10,773 bytes_archive/snapshots/2026-09-20-design-lab/workbench-original/workbench.jsruns30,957 bytes_archive/snapshots/2026-10-10-feature-doc/ROOT-SKILL.mddoc6,988 bytes_archive/snapshots/2026-10-10-feature-doc/forge-doc-policy/doc-paths.mddoc6,441 bytes_archive/使用手册.mddoc19,429 bytes_archive/复盘/2026-03-22-文档驱动开发Skill生态构建.mddoc20,004 bytes_archive/多会话并行规范.mddoc10,952 bytesassets/forge-architecture.svgasset5,415 bytesassets/forge-deliver-comparison.svgasset5,456 bytesassets/forge-deliver-v2-flow.svgasset5,168 bytesassets/forge-design-gating.svgasset3,166 bytesassets/forge-eng-internals.svgasset6,681 bytesassets/forge-workflow.svgasset6,552 bytesassets/v1-architecture-whiteboard.pngasset186,521 bytesassets/v1-workflow-whiteboard.pngasset175,430 bytesdocs/DESIGN-CHANGELOG.mddoc5,866 bytesdocs/DESIGN.mddoc30,769 bytesdocs/ENGINEERING-CHANGELOG.mddoc4,916 bytesdocs/ENGINEERING.mddoc6,503 bytesdocs/PRD-CHANGELOG.mddoc8,386 bytesdocs/PRD.mddoc24,554 bytesdocs/QA.mddoc8,196 bytesdocs/architecture.mddoc11,661 bytesdocs/archive/README.mddoc407 bytesdocs/archive/design-skill-audit-report.mddoc10,710 bytesdocs/archive/external-tools-analysis.mddoc16,055 bytesdocs/archive/forge-deliver-analysis.mddoc4,396 bytesdocs/archive/forge-qa-v3-research.mddoc23,037 bytesdocs/archive/openspec-research.mddoc9,469 bytesdocs/archive/raw/claude-md-forge-section-v1-2026-07-04.mddoc8,051 bytesdocs/archive/raw/discussions/defensive-design/2026-10-26-症状草稿.mddoc5,933 bytesdocs/archive/skill-audit-2026-07.mddoc32,346 bytesdocs/archive/skill-review-2026-07-17.mddoc10,522 bytesdocs/archive/skill-review-opus-2026-07.mddoc19,955 bytesdocs/archive/superpowers-comparison.mddoc4,565 bytesdocs/archive/v2026.04.24-fupan-workbench-CONTEXT.mddoc2,557 bytesdocs/archive/v2026.04.24-fupan-workbench-RESEARCH.mddoc10,771 bytesdocs/assets/fupan-workbench/v2026.04.24.3-detail.pngasset115,727 bytesdocs/assets/fupan-workbench/v2026.04.24.3-home.pngasset146,210 bytesdocs/brainstorm-人工反馈收集-2026-04-19.mddoc15,096 bytesdocs/d3-acceptance-2026-07.mddoc4,615 bytesdocs/design-skill-fusion-methodology.mddoc11,999 bytesdocs/diagrams/forge-architecture.jpgasset270,433 bytesdocs/diagrams/forge-brainstorm.jpgasset246,865 bytesdocs/diagrams/forge-bugfix.jpgasset202,494 bytesdocs/diagrams/forge-design-impl.jpgasset225,501 bytesdocs/diagrams/forge-design-lab.jpgasset203,064 bytesdocs/diagrams/forge-design.jpgasset258,133 bytesdocs/diagrams/forge-dev.jpgasset275,738 bytesdocs/diagrams/forge-doc-policy.jpgasset217,950 bytesdocs/diagrams/forge-doc-release.jpgasset252,617 bytesdocs/diagrams/forge-eng.jpgasset286,938 bytesdocs/diagrams/forge-feature-doc.jpgasset261,442 bytesdocs/diagrams/forge-fupan.jpgasset255,897 bytesdocs/diagrams/forge-prd.jpgasset252,837 bytesdocs/diagrams/forge-qa.jpgasset244,217 bytesdocs/diagrams/forge-review.jpgasset228,875 bytesdocs/diagrams/forge-ring.jpgasset90,573 bytesdocs/diagrams/forge-ship.jpgasset239,658 bytesdocs/diagrams/forge-status.jpgasset221,076 bytesdocs/forge-bugfix-changelog.mddoc17,959 bytesdocs/forge-design-lab-设计文档.mddoc22,567 bytesdocs/forge-design-lab-评测报告.mddoc9,286 bytesdocs/forge-feature-doc-设计文档.mddoc13,589 bytesdocs/forge-feature-doc-评测报告.mddoc16,163 bytesdocs/forge-user-guide.mddoc24,265 bytesdocs/glossary.mddoc3,545 bytesdocs/iterations/2026-04-19-双层验收清单.mddoc6,958 bytesdocs/iterations/2026-04-19-多会话并行协调.mddoc11,647 bytesdocs/iterations/2026-04-25-Bug修复验收报告与QA自动闭环.mddoc7,736 bytesdocs/optimization-plan-2026-07.mddoc8,802 bytesdocs/releases/v2026.04.24.3.mddoc1,590 bytesdocs/releases/v2026.04.25.mddoc5,664 bytesdocs/releases/v2026.04.27.mddoc4,794 bytesdocs/releases/v2026.07.17.mddoc3,242 bytesdocs/skills-reference.mddoc18,005 bytesdocs/workflow-guide.mddoc6,102 bytesevals/forge-design-lab/impl/run_impl_eval.pyruns4,926 bytesevals/forge-design-lab/results-2026-09-20-extra.jsonasset3,279 bytesevals/forge-design-lab/results-2026-09-20.jsonasset15,491 bytesevals/forge-design-lab/results-2026-10-10.jsonasset23,801 bytesevals/forge-design-lab/rubric.mddoc3,255 bytesevals/forge-design-lab/run_trigger_eval.pyruns5,016 bytesevals/forge-design-lab/system/run_system_eval.pyruns25,404 bytesevals/forge-design-lab/trigger-eval.jsonasset8,291 bytesevals/forge-feature-doc/results-2026-10-10-v2.jsonasset11,974 bytesevals/forge-feature-doc/results-2026-10-10.jsonasset11,815 bytesevals/forge-feature-doc/rubric.mddoc2,394 bytesevals/forge-feature-doc/run-2026-10-10-v2.logasset4,141 bytesevals/forge-feature-doc/run-2026-10-10.logasset4,040 bytesevals/forge-feature-doc/run_trigger_eval.pyruns5,353 bytesevals/forge-feature-doc/score-2026-10-10.jsonasset3,521 bytesevals/forge-feature-doc/score_doc.pyruns4,725 bytesevals/forge-feature-doc/trigger-eval.jsonasset3,549 bytesevals/trigger-cases.mddoc4,361 bytesexamples/pomodoro/README.mddoc3,571 bytesexamples/pomodoro/codex-delegate.mddoc7,201 bytesexamples/pomodoro/forge-brainstorm.mddoc5,608 bytesexamples/pomodoro/forge-bugfix.mddoc18,349 bytesexamples/pomodoro/forge-design-impl.mddoc10,165 bytesexamples/pomodoro/forge-design-lab.mddoc8,771 bytesexamples/pomodoro/forge-design.mddoc7,489 bytesexamples/pomodoro/forge-dev.mddoc10,933 bytesexamples/pomodoro/forge-doc-policy.mddoc2,866 bytesexamples/pomodoro/forge-doc-release.mddoc9,416 bytesexamples/pomodoro/forge-eng.mddoc14,264 bytesexamples/pomodoro/forge-feature-doc.mddoc5,737 bytesexamples/pomodoro/forge-fupan.mddoc11,121 bytesexamples/pomodoro/forge-prd.mddoc6,345 bytesexamples/pomodoro/forge-qa.mddoc14,801 bytesexamples/pomodoro/forge-review.mddoc8,571 bytesexamples/pomodoro/forge-ship.mddoc8,079 bytesexamples/pomodoro/forge-status.mddoc7,285 bytesexamples/pomodoro/forge.mddoc3,269 bytesexamples/pomodoro/fupan/learnings.jsonlasset1,732 bytesexamples/pomodoro/fupan/workbench-task.jsonasset10,743 bytesexamples/pomodoro/shots/codex-delegate/T01.prompt.mddoc9,909 bytesexamples/pomodoro/shots/codex-delegate/card.jpgasset176,235 bytesexamples/pomodoro/shots/codex-delegate/input.pngasset296,691 bytesexamples/pomodoro/shots/codex-delegate/output.pngasset116,222 bytesexamples/pomodoro/shots/codex-delegate/timer-core-head.jsruns1,082 bytesexamples/pomodoro/shots/forge-brainstorm/card.jpgasset240,601 bytesexamples/pomodoro/shots/forge-brainstorm/output.pngasset277,766 bytesexamples/pomodoro/shots/forge-bugfix/card.jpgasset117,057 bytesexamples/pomodoro/shots/forge-bugfix/output.pngasset38,812 bytesexamples/pomodoro/shots/forge-bugfix/修前修后对照.pngasset35,517 bytesexamples/pomodoro/shots/forge-design-impl/card.jpgasset84,056 bytesexamples/pomodoro/shots/forge-design-impl/input.pngasset22,643 bytesexamples/pomodoro/shots/forge-design-impl/output.pngasset22,643 bytesexamples/pomodoro/shots/forge-design-lab/card.jpgasset129,268 bytesexamples/pomodoro/shots/forge-design-lab/input.pngasset1,021,114 bytesexamples/pomodoro/shots/forge-design-lab/output.pngasset359,842 bytesexamples/pomodoro/shots/forge-design/card.jpgasset119,664 bytesexamples/pomodoro/shots/forge-design/input.pngasset121,949 bytesexamples/pomodoro/shots/forge-design/output.pngasset1,021,114 bytesexamples/pomodoro/shots/forge-dev/card.jpgasset146,249 bytesexamples/pomodoro/shots/forge-dev/output.pngasset110,827 bytesexamples/pomodoro/shots/forge-dev/status.mddoc4,956 bytesexamples/pomodoro/shots/forge-dev/流水线.mddoc554 bytesexamples/pomodoro/shots/forge-doc-policy/card.jpgasset107,018 bytesexamples/pomodoro/shots/forge-doc-policy/output.pngasset49,964 bytesexamples/pomodoro/shots/forge-doc-release/card.jpgasset150,515 bytesexamples/pomodoro/shots/forge-doc-release/input.pngasset106,682 bytesexamples/pomodoro/shots/forge-doc-release/output.pngasset193,230 bytesexamples/pomodoro/shots/forge-doc-release/发布前README.mddoc546 bytesexamples/pomodoro/shots/forge-eng/card.jpgasset105,541 bytesexamples/pomodoro/shots/forge-eng/input.pngasset202,795 bytesexamples/pomodoro/shots/forge-eng/output.pngasset46,593 bytesexamples/pomodoro/shots/forge-feature-doc/card.jpgasset172,186 bytesexamples/pomodoro/shots/forge-feature-doc/input.pngasset170,706 bytesexamples/pomodoro/shots/forge-feature-doc/output.pngasset186,487 bytesexamples/pomodoro/shots/forge-feature-doc/六种状态-示意图.pngasset179,870 bytesexamples/pomodoro/shots/forge-fupan/01-session-pending.pngasset1,493,544 bytesexamples/pomodoro/shots/forge-fupan/02-session-filled.pngasset1,509,000 bytesexamples/pomodoro/shots/forge-fupan/02b-topic-form.pngasset657,893 bytesexamples/pomodoro/shots/forge-fupan/03-session-submitted.pngasset940,302 bytesexamples/pomodoro/shots/forge-fupan/04-home.pngasset120,000 bytesexamples/pomodoro/shots/forge-fupan/05-session-done.pngasset922,939 bytesexamples/pomodoro/shots/forge-fupan/06-review-page.pngasset555,000 bytesexamples/pomodoro/shots/forge-fupan/07-ledger.pngasset231,153 bytesexamples/pomodoro/shots/forge-fupan/card.jpgasset184,746 bytesexamples/pomodoro/shots/forge-fupan/output.pngasset1,271,123 bytesexamples/pomodoro/shots/forge-prd/card.jpgasset206,402 bytesexamples/pomodoro/shots/forge-prd/input.pngasset207,128 bytesexamples/pomodoro/shots/forge-prd/output.pngasset200,006 bytesexamples/pomodoro/shots/forge-qa/QA.mddoc25,937 bytesexamples/pomodoro/shots/forge-qa/_desktop-focus-running.pngasset48,037 bytesexamples/pomodoro/shots/forge-qa/_impl-compare-page.pngasset23,002 bytesexamples/pomodoro/shots/forge-qa/_impl-compare-skeleton.pngasset23,002 bytesexamples/pomodoro/shots/forge-qa/_overview.pngasset161,738 bytesexamples/pomodoro/shots/forge-qa/_phone-focus-running.pngasset29,448 bytesexamples/pomodoro/shots/forge-qa/card.jpgasset196,522 bytesexamples/pomodoro/shots/forge-qa/input.pngasset46,593 bytesexamples/pomodoro/shots/forge-qa/output.pngasset256,534 bytesexamples/pomodoro/shots/forge-review/card.jpgasset180,634 bytesexamples/pomodoro/shots/forge-review/output.pngasset229,951 bytesexamples/pomodoro/shots/forge-ship/card.jpgasset189,167 bytesexamples/pomodoro/shots/forge-ship/output.pngasset482,760 bytesexamples/pomodoro/shots/forge-status/card.jpgasset147,193 bytesexamples/pomodoro/shots/forge-status/input.pngasset37,201 bytesexamples/pomodoro/shots/forge-status/output.pngasset165,144 bytesexamples/pomodoro/shots/forge-status/worktree-list.txtdoc153 bytesexamples/pomodoro/shots/forge-status/终端输出.txtdoc792 bytesexamples/pomodoro/shots/forge-status/输入.txtdoc148 bytesexamples/pomodoro/shots/forge-suite/card.jpgasset100,066 bytesexamples/pomodoro/shots/forge-suite/output.pngasset38,663 bytesexamples/pomodoro/shots/forge/card.jpgasset152,304 bytesexamples/pomodoro/shots/forge/input.pngasset93,535 bytesexamples/pomodoro/shots/forge/output.pngasset142,334 bytesexamples/pomodoro/shots/forge/终端输出.txtdoc542 bytesinstall.shruns6,636 bytesskills/_shared/current-doc-loading.mddoc1,127 bytesskills/_shared/feature-status-protocol.mddoc1,454 bytesskills/_shared/generate_image2.pyruns6,066 bytesskills/_shared/interaction-protocol.mddoc4,602 bytesskills/_shared/visual-decision-layer.mddoc8,177 bytestools/fupan-workbench/README.mddoc1,649 bytestools/fupan-workbench/__init__.pyruns71 bytestools/fupan-workbench/frontend/index.htmlasset305 bytestools/fupan-workbench/frontend/package-lock.jsonasset51,897 bytestools/fupan-workbench/frontend/package.jsonruns409 bytestools/fupan-workbench/frontend/src/main.jsxruns29,655 bytestools/fupan-workbench/frontend/src/styles.cssasset20,089 bytestools/fupan-workbench/frontend/vite.config.jsruns200 bytestools/fupan-workbench/launcher.pyruns8,814 bytestools/fupan-workbench/markdown_reader.pyruns1,299 bytestools/fupan-workbench/requirements.txtdoc91 bytestools/fupan-workbench/review_index.pyruns7,833 bytestools/fupan-workbench/server.pyruns8,293 bytestools/fupan-workbench/static/assets/index-DffckMrb.jsruns198,794 bytestools/fupan-workbench/static/assets/index-DvMidqQ_.cssasset16,429 bytestools/fupan-workbench/static/index.htmlasset403 bytestools/fupan-workbench/task_store.pyruns7,569 bytestools/fupan-workbench/tests/test_review_index.pyruns3,517 bytestools/fupan-workbench/tests/test_task_store.pyruns4,824 bytesupdatemd/README.mddoc841 bytesupdatemd/claude-md/2026-04-18-R8-R9-R10-新增规则.mddoc1,201 bytesupdatemd/claude-md/2026-04-19-R11-双层验收清单.mddoc3,511 bytesupdatemd/forge-bugfix/2026-04-18-v3.0-跨会话知识+需求分流+经验沉淀+方案确认.mddoc6,467 bytesupdatemd/forge-bugfix/2026-04-18-v3.1-多Bug分诊+标签化日志+5Whys链+Bug分类+防护措施.mddoc7,972 bytesupdatemd/forge-bugfix/2026-04-19-双层验收清单改造.mddoc4,430 bytesupdatemd/forge-design/2026-04-18-组件复用审查.mddoc671 bytesupdatemd/forge-eng/2026-04-18-影响面扫描+环境验证.mddoc1,745 bytesupdatemd/forge-prd/2026-04-18-异常态强制项.mddoc1,167 bytesupdatemd/forge-qa/2026-04-18-探索性测试前置.mddoc1,114 bytesupdatemd/forge-qa/2026-04-19-Mode-B单bug验收.mddoc3,602 bytesupdatemd/forge-review/2026-04-18-重复代码检测.mddoc651 bytes
Read SKILL.md
# /forge:工作流总入口
不知道下一步该干什么?打 `/forge`。
全程中文。
---
## 执行流程
### 第1步:检测项目状态
```bash
_ROOT=$(git rev-parse --show-toplevel 2>/dev/null || pwd)View the complete source on GitHubforge-deliver
When your agent uses it
端到端交付纯编排层:调用 forge-* 子 skill 从需求一路编排到发布和文档,.deliver/state.json 检查点,支持 --auto / --resume。 触发方式:用户说"forge-deliver"、"端到端交付"、"全自动交付"。
What it loads into context
Frontmatter
119 tokensAlways available to the agent
SKILL.md
5,589 tokensWhen the skill is activated
Reference documents
1,938 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- 三条铁律
- 前置脚本(每次先运行)
- 参数解析
- 模式说明
- 恢复模式(`--resume`)
- 状态管理
- AskUserQuestion 格式规范
- Phase 0:需求理解
- Phase 1:设计
- Phase 2:工程
- Phase 3:QA
- Phase 4:审查
- Phase 5:发布
- Phase 6:文档
- Phase 7:验收
- 重要规则
Files
README.mddoc6,740 bytesSKILL.mdcore19,524 bytesSKILL.mdcore19,524 bytesSKILL.mdcore19,524 bytesSKILL.mdcore19,524 bytesSKILL.mdcore19,524 bytesSKILL.mdcore19,524 bytes
Read SKILL.md
> **文档落地路径**:遵循 forge-doc-policy 规范。完整白名单 + frontmatter schema 见
> `~/.claude/skills/forge-doc-policy/doc-paths.md`。
> **当前文档加载顺序**:编排层先读项目 `CLAUDE.md`、`docs/README.md`、`docs/INDEX.md`、
> `.features/_registry.md` 和相关根级当前真相源;历史账本只按需追溯。
> 详细规则见 `~/.claude/skills/_shared/current-doc-loading.md`。
# /forge-deliver v2:端到端交付编排层
一句话描述你的想法,拿到完整交付。
---
## 三条铁律
View the complete source on GitHubforge-bugfix
When your agent uses it
系统性 Bug 修复流水线(P0-P8):一次修一个,强制根因分析、独立 worktree、TDD、双层验收报告、forge-qa 回归;多会话经 .forge/active.md 防撞车。 铁律:不做根因分析不写代码;新发现禁止顺手修;没有用户最终结论不合并。 触发方式:用户说"bugfix"、"反馈个问题"、"修这个 bug"、"这里有问题"、"为什么不对"、"排查一下"、"investigate"、"forge-bugfix",或报告错误、异常行为、功能失效时。
What it loads into context
Frontmatter
228 tokensAlways available to the agent
SKILL.md
3,825 tokensWhen the skill is activated
Reference documents
0 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- 设计哲学
- 铁律
- 流程总览
- 阶段手册(按需加载,进入对应阶段前必读)
- P8 沉淀与出口
- 补充速查(铁律与红线见上,此处只列正文未覆盖的执行细节)
Files
SKILL.mdcore12,505 bytes
Read SKILL.md
> **文档落地路径**:遵循 forge-doc-policy 规范。完整白名单 + frontmatter schema 见
> `~/.claude/skills/forge-doc-policy/doc-paths.md`。
> **当前文档加载顺序**:先读项目 `CLAUDE.md`、`docs/README.md`、`docs/INDEX.md`、
> `docs/QA.md` / `docs/ENGINEERING.md` 相关当前真相源,再读活跃 BF 报告和 backlog。
> 历史 BF 报告在 `docs/archive/raw/bugfix-reviews/`,只作追溯证据。
> 详细规则见 `~/.claude/skills/_shared/current-doc-loading.md`。
# /forge-bugfix:一次一 bug + Bug 修复验收报告
## 设计哲学
**短会话、单 bug 隔离、结构化证据、可追溯、可丢弃。**
核心机制:View the complete source on GitHubforge-design
When your agent uses it
全栈设计规划:分级门控管理 DESIGN.md 与 DESIGN-CHANGELOG,内置可检索设计规则库(UX 规则/配色/字体),三层 Token、forge-design-lab 工作台门禁(布局/比例/密度在真 token 骨架上定,Image 2 退为气质稿)、反 AI 模板检测。 触发方式:用户说"设计"、"forge-design"、"先看效果图",或 forge-dev 调度、需要创建/更新设计文档时。
What it loads into context
Frontmatter
128 tokensAlways available to the agent
SKILL.md
4,014 tokensWhen the skill is activated
Reference documents
0 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- 流程总览
- 分级门控体系
- 设计自检要点
- 第0步:定位项目文档 + 门控判定
- 第1步(迭代模式):理解现状
- 第1步(创建模式):从零创建 DESIGN.md
- 第2步:设计审计
- 第3步:设计方案
- 第4步:更新设计文档
- 第5步:设计质量评估
- 第6步:确认与总结
- Feature 状态管理(.features/ 架构)
- 数据资源
- 重要规则
Files
SKILL.mdcore14,299 bytesSKILL.mdcore14,299 bytesSKILL.mdcore14,299 bytesSKILL.mdcore14,299 bytesSKILL.mdcore14,299 bytesSKILL.mdcore14,299 bytes
Read SKILL.md
> **文档落地路径**:遵循 forge-doc-policy 规范。完整白名单 + frontmatter schema 见
> `~/.claude/skills/forge-doc-policy/doc-paths.md`。
> **当前文档加载契约**:先读项目 `CLAUDE.md`、`docs/README.md`、`docs/INDEX.md` 和 `docs/DESIGN.md` 当前真相源;长 changelog、Image2 历史稿和 raw archive 只在追溯原因时加载。详见 `~/.claude/skills/_shared/current-doc-loading.md`。
# /forge-design:全栈设计规划与文档管理
纯设计规划——**不写代码**。产出 DESIGN.md 和设计方案,交由 forge-design-impl 或 forge-eng 实现。
## 流程总览
```
门控判定(L1/L2/L3)
│
├── L1 完整设计 ──→ 竞品调研 → 美学方向(3+) → 配色/字体 → Token体系 → forge-design-lab 工作台(布局/比例/密度)→ 完整审计 → 0-10审查 → DESIGN.mdView the complete source on GitHubforge-design-lab
When your agent uses it
在真实 token、真实像素的 HTML 骨架上做页面与组件的设计决策:生成可点、可改、可存的设计工作台,按七层逐节点审查,保存即导出 token 与 CSS 并回写 DESIGN.md 的 token 表。用户说「开工作台」「看骨架」「讨论 XX 的设计稿」「改 token」「我保存好了,按调整后的来」时用;只要在争论比例、密度、一屏几张、行长、栏宽、留白这类要看见才能判断的问题,哪怕没提工作台也用;forge-design 第三步遇到页面、组件、布局决策时必调。不处理:DESIGN.md 散文与评分(forge-design)、产品代码(forge-eng、forge-design-impl)、效果图气质预判(Image 2)、实现后截图验收(forge-qa)。
What it loads into context
Frontmatter
206 tokensAlways available to the agent
SKILL.md
5,146 tokensWhen the skill is activated
Reference documents
0 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- 定位与边界
- 按需读取
- 意图分流
- 工具
- S0 零件库:一套模板 + 有限的定制
- S1 适配:先知道这个项目有什么
- S2 线框:先确认结构,再画皮
- S3 骨架:真 token、真像素、可点
- S4 审查回合:读文件,不读截图
- S5 交接:让实现看到同一份值
- 和 forge-design 的接口
- 输出
- 红线
- 边界与失败处理
Files
SKILL.mdcore18,236 bytesSKILL.mdcore18,236 bytesSKILL.mdcore18,236 bytesSKILL.mdcore18,236 bytesSKILL.mdcore18,236 bytesSKILL.mdcore18,236 bytesSKILL.mdcore18,236 bytesSKILL.mdcore18,236 bytesSKILL.mdcore18,236 bytesSKILL.mdcore18,236 bytesSKILL.mdcore18,236 bytes
Read SKILL.md
# forge-design-lab — 在真比例骨架上定设计
交付一个页面包(骨架 HTML + `<page>.tokens.json` + 由它生成的 `.js` 与前端 `.tokens.css`),并跑完一轮闭环:适配 → 线框确认 → 骨架 → 七层审查 → 保存 → 交接。实现时看到的值和用户在骨架上看到的是同一份文件。
## 定位与边界
像一个把设计稿钉在墙上的美术指导:把「这一屏到底放得下几张、这一行到底多少个字、这个间距到底是 8 还是 12」讲透。手段是一个占满窗口、按真实 token 与真实像素渲染的骨架,右侧面板从顶往下七层逐节点提问;用户看不顺眼当场改值、当场变、点保存直写仓库。
核心立场:设计阶段用户要的是「看一眼就能判断」,判断完直接进实现。所以每个决策落成一个 token,token 只存在一处(tokens.json),骨架 `<link>` 的和前端 import 的是同一份生成的 css,组件 CSS 只写 `var()`。DESIGN.md 里的 token 表是从 json 生成的副产品,不是决策的载体。Image 2 生图画出来的比例不可信:v32.0 的「7fr:3fr、完整卡」看文字很合理,实机一屏只放得下 1.9 张,这就是文字掩盖比例的代价。
一次只处理一个模块(DESIGN.md 的一个模块号,或 feature-spec 的一个页面/组件)。
边界之外的交出去:DESIGN.md 散文规格、评分、AI 模板痕迹检测交 forge-design;把设计变成组件代码交 forge-eng / forge-design-impl(codex);气质与风格方向的效果图交 Image 2(visual-decision-layer);实现后的截图对比交 forge-qa;站点级 token(brand 色、字体族、字号阶梯)的修改交全站设计审查,本 skill 只读并可标「提议改动」;「要不要这个页面」交 forge-brainstorm / forge-prd。
View the complete source on GitHubforge-eng
When your agent uses it
工程实现主力:管理 ENGINEERING.md,完整/轻量两模式;worktree 会话隔离、分级 TDD、验证门(证据先于断言)、任务原子化 Wave 并行、独立 commit。 触发方式:用户说"工程"、"实现"、"forge-eng",或 forge-dev 调度、需要实现代码变更时。
What it loads into context
Frontmatter
95 tokensAlways available to the agent
SKILL.md
3,836 tokensWhen the skill is activated
Reference documents
0 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- 流程总览
- 工程原则
- 三条铁律(来自 Superpowers,不可违反)
- 第0步:定位项目文档
- 第0.5步:模式选择
- 第1步:范围挑战
- 第2步:理解现状(迭代模式)
- 第2步(替代):从零创建 ENGINEERING.md
- 第3步:四章工程审查
- 第4步:工程方案设计
- 第5步:更新工程文档
- 第5.5步:创建 Worktree(会话级隔离)
- 第5.6-5.7步:Dev 环境准备(按需)
- 第6-7步:任务拆分 + Wave 并行执行(TDD + 验证门)
- 第8步:必需产出
- 第9步:确认与总结
- 第10步:分支收尾
- Feature 状态管理(.features/ 架构,仅完整模式)
- 资源
Files
SKILL.mdcore13,877 bytes
Read SKILL.md
> **文档落地路径**:遵循 forge-doc-policy 规范。完整白名单 + frontmatter schema 见
> `~/.claude/skills/forge-doc-policy/doc-paths.md`。
> **当前文档加载契约**:先读项目 `CLAUDE.md`、`docs/README.md`、`docs/INDEX.md` 和 `docs/ENGINEERING.md` 当前真相源;PRD/DESIGN 只读相关章节,长 changelog 和 raw archive 只在追溯历史原因时加载。详见 `~/.claude/skills/_shared/current-doc-loading.md`。
# /forge-eng:工程文档管理与代码实现 v2
管理项目的 ENGINEERING.md(前后端合并),基于 PRD + DESIGN.md 产出工程方案并实现。
集成 Worktree 隔离、分级 TDD、Verification Gate。
## 流程总览
```
完整模式:
第0步 定位文档 → 第0.5步 模式选择 → 第1步 范围挑战 → 第2步 理解现状View the complete source on GitHubforge-prd
When your agent uses it
产品诊断与 PRD 迭代:诊断根因(设计缺陷/实现偏离/PRD 遗漏),必要时反驳需求,更新 PRD 并生成带异常态门禁的 Feature Spec。 触发方式:用户说"更新PRD"、"调整需求"、"迭代PRD"、"forge-prd"、描述产品问题、需要修改产品需求时。
What it loads into context
Frontmatter
105 tokensAlways available to the agent
SKILL.md
4,403 tokensWhen the skill is activated
Reference documents
0 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- 流程总览
- 可视化规范
- 第0步:定位项目、PRD 与 CHANGELOG
- 第1步:理解现状(迭代模式)
- 第1步(替代):从零创建 PRD
- 第2步:诊断与审查(自适应深度)
- 第3步:方案确认
- 第3.5步:生成 Feature Spec(用户确认门禁)
- 第3.6步:生成/更新项目 CLAUDE.md
- 第4步:写入文档(用户确认后执行)
- Feature 状态管理(.features/ 架构)
- 完整性原则
- 资源
Files
SKILL.mdcore16,699 bytes
Read SKILL.md
> **文档落地路径**:遵循 forge-doc-policy 规范。完整白名单 + frontmatter schema 见
> `~/.claude/skills/forge-doc-policy/doc-paths.md`。
> **当前文档加载契约**:先读项目 `CLAUDE.md`、`docs/README.md`、`docs/INDEX.md` 和根级当前真相源;长 changelog 和 raw archive 只在追溯历史原因时加载。详见 `~/.claude/skills/_shared/current-doc-loading.md`。
# /forge-prd:产品诊断与 PRD 迭代管理器
## 流程总览
全程中文。每个步骤结束后暂停等待用户反馈。
```
用户描述问题/需求
│
▼View the complete source on GitHubforge-review
When your agent uses it
上线前 PR 审查。分析当前分支与基础分支的 diff,检查 SQL 安全、竞态条件、 LLM 信任边界、枚举完整性等测试捕获不到的结构性问题。发现问题直接修复。 触发方式:用户说"review"、"审查代码"、"上线前检查"、"forge-review",或 forge-dev --full 调度。 与内置 code-review/verify 的分工:forge 工作流内的上线前结构性审查用本 skill;用户点名 /code-review 或 /verify 时用对应内置 skill。
What it loads into context
Frontmatter
177 tokensAlways available to the agent
SKILL.md
2,015 tokensWhen the skill is activated
Reference documents
0 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- 前置脚本(每次先运行)
- 第0步:确定基础分支
- 第1步:检查分支状态
- 第2步:获取完整 diff
- 第3步:两轮审查
- 第4步:修复优先原则
- 第5步:TODOS 交叉检查
- 第6步:文档过时检查
- 重要规则
Files
SKILL.mdcore7,110 bytesSKILL.mdcore7,110 bytesSKILL.mdcore7,110 bytesSKILL.mdcore7,110 bytesSKILL.mdcore7,110 bytes
Read SKILL.md
> **文档落地路径**:遵循 forge-doc-policy 规范。完整白名单 + frontmatter schema 见
> `~/.claude/skills/forge-doc-policy/doc-paths.md`。
> **当前文档加载顺序**:需要判断需求/设计/工程口径时,先读项目 `CLAUDE.md`、
> `docs/README.md`、`docs/INDEX.md` 和相关根级当前真相源;历史 archive 只作追溯证据。
> 详细规则见 `~/.claude/skills/_shared/current-doc-loading.md`。
# /forge-review:代码审查
## 前置脚本(每次先运行)
```bash
_BRANCH=$(git branch --show-current 2>/dev/null || echo "unknown")
echo "当前分支: $_BRANCH"
```View the complete source on GitHubforge-ship
When your agent uses it
发布上线:PR only(建 PR 即停)或 Full ship(合并 PR + 同步本地基础分支);测试失败不发布、不 force push,状态汇报严格区分提交/推送/合并/部署。 触发方式:用户说"ship"、"发布"、"合并上线"、"发 PR"。
What it loads into context
Frontmatter
121 tokensAlways available to the agent
SKILL.md
2,832 tokensWhen the skill is activated
Reference documents
0 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- 核心原则
- 前置脚本
- 第0步:确定 Ship 模式和基础分支
- 第0.5步:生产写面授权门
- 第1步:安全检查
- 第2步:同步基础分支到当前功能分支
- 第3步:运行项目验证
- 第4步:发布前 diff 审查
- 第5步:更新 CHANGELOG
- 第6步:最终提交
- 第7步:推送当前分支
- 第8步:创建或更新 PR
- 第9步:PR 合并前检查
- 第10步:合并 PR 以更新远程基础分支
- 第11步:同步本地基础分支 worktree
- 第12步:发布完成总结
- 重要规则
Files
SKILL.mdcore10,510 bytesSKILL.mdcore10,510 bytesSKILL.mdcore10,510 bytesSKILL.mdcore10,510 bytesSKILL.mdcore10,510 bytesSKILL.mdcore10,510 bytesSKILL.mdcore10,510 bytesSKILL.mdcore10,510 bytesSKILL.mdcore10,510 bytesSKILL.mdcore10,510 bytesSKILL.mdcore10,510 bytesSKILL.mdcore10,510 bytes
Read SKILL.md
> **文档落地路径**:遵循 forge-doc-policy 规范。完整白名单 + frontmatter schema 见
> `~/.claude/skills/forge-doc-policy/doc-paths.md`。
> **当前文档加载顺序**:涉及文档更新时,先读项目 `CLAUDE.md`、`docs/README.md`、
> `docs/INDEX.md` 和相关根级当前真相源;`archive/raw` 只作历史证据。
> 详细规则见 `~/.claude/skills/_shared/current-doc-loading.md`。
# /forge-ship:发布上线
## 核心原则
`ship` 不是“创建 PR 就结束”。它有两个模式:
- **PR only**:提交、推送、创建或更新 PR,然后停止。
- **Full ship**:提交、推送、创建或更新 PR,检查 PR 状态,合并 PR 到远程基础分支,再把本地基础分支 worktree 同步到 `origin/<基础分支>`。View the complete source on GitHubforge-design
When your agent uses it
全栈设计规划:分级门控管理 DESIGN.md 与 DESIGN-CHANGELOG,内置可检索设计规则库(UX 规则/配色/字体),三层 Token、forge-design-lab 工作台门禁(布局/比例/密度在真 token 骨架上定,Image 2 退为气质稿)、反 AI 模板检测。 触发方式:用户说"设计"、"forge-design"、"先看效果图",或 forge-dev 调度、需要创建/更新设计文档时。
What it loads into context
Frontmatter
128 tokensAlways available to the agent
SKILL.md
4,078 tokensWhen the skill is activated
Reference documents
7,805 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- 流程总览
- 分级门控体系
- 设计自检要点
- 第0步:定位项目文档 + 门控判定
- 第1步(迭代模式):理解现状
- 第1步(创建模式):从零创建 DESIGN.md
- 第2步:设计审计
- 第3步:设计方案
- 第4步:更新设计文档
- 第5步:设计质量评估
- 第6步:确认与总结
- Feature 状态管理(.features/ 架构)
- 数据资源
- 重要规则
Scripts executed separately
scripts/core.pyscripts/design_system.pyscripts/search.py
Files
README.mddoc2,136 bytesSKILL.mdcore14,545 bytesSKILL.mdcore14,545 bytesSKILL.mdcore14,545 bytesSKILL.mdcore14,545 bytesSKILL.mdcore14,545 bytesSKILL.mdcore14,545 bytesdata/charts.csvasset19,391 bytesdata/colors.csvasset32,432 bytesdata/landing.csvasset16,720 bytesdata/products.csvasset58,006 bytesdata/styles.csvasset142,673 bytesdata/typography.csvasset49,667 bytesdata/ui-reasoning.csvasset53,070 bytesdata/ux-guidelines.csvasset18,766 bytesreferences/audit-and-scoring.mddoc9,374 bytesreferences/create-mode.mddoc8,913 bytesreferences/design-template.mddoc5,321 bytesscripts/core.pyruns11,512 bytesscripts/design_system.pyruns43,614 bytesscripts/search.pyruns5,492 bytes
Read SKILL.md
> **文档落地路径**:遵循 forge-doc-policy 规范。完整白名单 + frontmatter schema 见
> `~/.claude/skills/forge-doc-policy/doc-paths.md`。
> **当前文档加载契约**:先读项目 `CLAUDE.md`、`docs/README.md`、`docs/INDEX.md` 和 `docs/DESIGN.md` 当前真相源;长 changelog、Image2 历史稿和 raw archive 只在追溯原因时加载。详见 `~/.claude/skills/_shared/current-doc-loading.md`。
# /forge-design:全栈设计规划与文档管理
纯设计规划——**不写代码**。产出 DESIGN.md 和设计方案,交由 forge-design-impl 或 forge-eng 实现。
## 流程总览
```
门控判定(L1/L2/L3)
│
├── L1 完整设计 ──→ 竞品调研 → 美学方向(3+) → 配色/字体 → Token体系 → forge-design-lab 工作台(布局/比例/密度)→ 完整审计 → 0-10审查 → DESIGN.mdView the complete source on GitHubforge-prd
When your agent uses it
产品诊断与 PRD 迭代:诊断根因(设计缺陷/实现偏离/PRD 遗漏),必要时反驳需求,更新 PRD 并生成带异常态门禁的 Feature Spec。 触发方式:用户说"更新PRD"、"调整需求"、"迭代PRD"、"forge-prd"、描述产品问题、需要修改产品需求时。
What it loads into context
Frontmatter
105 tokensAlways available to the agent
SKILL.md
4,479 tokensWhen the skill is activated
Reference documents
6,873 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- 流程总览
- 可视化规范
- 第0步:定位项目、PRD 与 CHANGELOG
- 第1步:理解现状(迭代模式)
- 第1步(替代):从零创建 PRD
- 第2步:诊断与审查(自适应深度)
- 第3步:方案确认
- 第3.5步:生成 Feature Spec(用户确认门禁)
- 第3.6步:生成/更新项目 CLAUDE.md
- 第4步:写入文档(用户确认后执行)
- Feature 状态管理(.features/ 架构)
- 完整性原则
- 资源
Files
README.mddoc1,962 bytesSKILL.mdcore16,981 bytesreferences/feature-spec-template.mddoc4,210 bytesreferences/prd-details.mddoc9,522 bytesreferences/prd-template.mddoc3,891 bytesreferences/project-claude-md-template.mddoc4,695 bytes
Read SKILL.md
> **文档落地路径**:遵循 forge-doc-policy 规范。完整白名单 + frontmatter schema 见
> `~/.claude/skills/forge-doc-policy/doc-paths.md`。
> **当前文档加载契约**:先读项目 `CLAUDE.md`、`docs/README.md`、`docs/INDEX.md` 和根级当前真相源;长 changelog 和 raw archive 只在追溯历史原因时加载。详见 `~/.claude/skills/_shared/current-doc-loading.md`。
# /forge-prd:产品诊断与 PRD 迭代管理器
## 流程总览
全程中文。每个步骤结束后暂停等待用户反馈。
```
用户描述问题/需求
│
▼View the complete source on GitHubforge-brainstorm
When your agent uses it
通用头脑风暴:4 种模式(产品/内容/构建/探索)× 6 阶段,强制前提挑战和 2-3 方案,产出可跨会话续聊的思考文档;支持 Mermaid/图辅助判断。 触发方式:用户说"头脑风暴"、"brainstorm"、"讨论一下"、"我有个想法"、"帮我想想"、"画图梳理想法"。
What it loads into context
Frontmatter
123 tokensAlways available to the agent
SKILL.md
4,227 tokensWhen the skill is activated
Reference documents
5,923 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- 铁律
- 前置脚本(每次先运行)
- Phase 0:上下文感知 + 模式检测
- Phase 1:深度提问(模式专属)
- Phase 2:景观感知(可选)
- Phase 3:前提挑战
- Phase 4:方案生成(强制 2-3 方案)
- Phase 4.5:视觉决策辅助(按需)
- Phase 5:思考文档
- Phase 6:下一步(用户决定)
- 重要规则
Files
README.mddoc3,387 bytesSKILL.mdcore14,322 bytesSKILL.mdcore14,322 bytesreferences/question-banks.mddoc4,262 bytesreferences/thinking-doc-template.mddoc11,684 bytes
Read SKILL.md
> **文档落地路径**:遵循 forge-doc-policy 规范。完整白名单 + frontmatter schema 见
> `~/.claude/skills/forge-doc-policy/doc-paths.md`。
> **当前文档加载顺序**:先读项目 `CLAUDE.md`、`docs/README.md`、`docs/INDEX.md`。
> 需要写入当前事实时进入根级当前真相源;brainstorm 原始讨论默认进入 archive/raw。
> 详细规则见 `~/.claude/skills/_shared/current-doc-loading.md`。
# /forge-brainstorm:通用头脑风暴
任何时候、任何话题。讨论完用户自己决定下一步。
全程中文。
---
View the complete source on GitHubforge-bugfix
When your agent uses it
系统性 Bug 修复流水线(P0-P8):一次修一个,强制根因分析、独立 worktree、TDD、双层验收报告、forge-qa 回归;多会话经 .forge/active.md 防撞车。 铁律:不做根因分析不写代码;新发现禁止顺手修;没有用户最终结论不合并。 触发方式:用户说"bugfix"、"反馈个问题"、"修这个 bug"、"这里有问题"、"为什么不对"、"排查一下"、"investigate"、"forge-bugfix",或报告错误、异常行为、功能失效时。
What it loads into context
Frontmatter
228 tokensAlways available to the agent
SKILL.md
3,879 tokensWhen the skill is activated
Reference documents
23,238 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- 设计哲学
- 铁律
- 流程总览
- 阶段手册(按需加载,进入对应阶段前必读)
- P8 沉淀与出口
- 补充速查(铁律与红线见上,此处只列正文未覆盖的执行细节)
Scripts executed separately
scripts/get-session-id.shscripts/validate-bugfix-report.py
Files
README.mddoc4,599 bytesSKILL.mdcore12,711 bytesreferences/p0-p1-session-setup.mddoc9,100 bytesreferences/p2-scoping.mddoc6,163 bytesreferences/p3-p5-fix-loop.mddoc17,166 bytesreferences/p6-p7-acceptance.mddoc20,485 bytesscripts/get-session-id.shruns1,700 bytesscripts/validate-bugfix-report.pyruns7,119 bytestemplates/active.mddoc3,392 bytestemplates/backlog.mddoc5,689 bytestemplates/review-checklist.mddoc9,269 bytes
Read SKILL.md
> **文档落地路径**:遵循 forge-doc-policy 规范。完整白名单 + frontmatter schema 见
> `~/.claude/skills/forge-doc-policy/doc-paths.md`。
> **当前文档加载顺序**:先读项目 `CLAUDE.md`、`docs/README.md`、`docs/INDEX.md`、
> `docs/QA.md` / `docs/ENGINEERING.md` 相关当前真相源,再读活跃 BF 报告和 backlog。
> 历史 BF 报告在 `docs/archive/raw/bugfix-reviews/`,只作追溯证据。
> 详细规则见 `~/.claude/skills/_shared/current-doc-loading.md`。
# /forge-bugfix:一次一 bug + Bug 修复验收报告
## 设计哲学
**短会话、单 bug 隔离、结构化证据、可追溯、可丢弃。**
核心机制:View the complete source on GitHubforge-design
When your agent uses it
全栈设计规划:分级门控管理 DESIGN.md 与 DESIGN-CHANGELOG,内置可检索设计规则库(UX 规则/配色/字体),三层 Token、forge-design-lab 工作台门禁(布局/比例/密度在真 token 骨架上定,Image 2 退为气质稿)、反 AI 模板检测。 触发方式:用户说"设计"、"forge-design"、"先看效果图",或 forge-dev 调度、需要创建/更新设计文档时。用户说"不要防御性设计""检查防御性设计",或嫌页面上说明、提示、小字太多挤占布局时也用,哪怕没说"防御性"三个字。不处理代码层的防御性编程(空值判断、try/catch,交 forge-review)。
What it loads into context
Frontmatter
196 tokensAlways available to the agent
SKILL.md
4,374 tokensWhen the skill is activated
Reference documents
10,508 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- 流程总览
- 分级门控体系
- 设计自检要点
- 第0步:定位项目文档 + 门控判定
- 第1步(迭代模式):理解现状
- 第1步(创建模式):从零创建 DESIGN.md
- 第2步:设计审计
- 第3步:设计方案
- 第4步:更新设计文档
- 第5步:设计质量评估
- 第6步:确认与总结
- Feature 状态管理(.features/ 架构)
- 数据资源
- 重要规则
Scripts executed separately
scripts/core.pyscripts/design_system.pyscripts/search.py
Files
README.mddoc5,075 bytesSKILL.mdcore15,678 bytesSKILL.mdcore15,678 bytesSKILL.mdcore15,678 bytesSKILL.mdcore15,678 bytesSKILL.mdcore15,678 bytesSKILL.mdcore15,678 bytesdata/charts.csvasset19,391 bytesdata/colors.csvasset32,432 bytesdata/landing.csvasset16,720 bytesdata/products.csvasset58,006 bytesdata/styles.csvasset142,673 bytesdata/typography.csvasset49,667 bytesdata/ui-reasoning.csvasset53,070 bytesdata/ux-guidelines.csvasset19,191 bytesreferences/audit-and-scoring.mddoc9,902 bytesreferences/create-mode.mddoc8,913 bytesreferences/defensive-design.mddoc6,000 bytesreferences/design-template.mddoc5,383 bytesscripts/core.pyruns11,512 bytesscripts/design_system.pyruns43,614 bytesscripts/search.pyruns5,492 bytes
Read SKILL.md
> **文档落地路径**:遵循 forge-doc-policy 规范。完整白名单 + frontmatter schema 见
> `~/.claude/skills/forge-doc-policy/doc-paths.md`。
> **当前文档加载契约**:先读项目 `CLAUDE.md`、`docs/README.md`、`docs/INDEX.md` 和 `docs/DESIGN.md` 当前真相源;长 changelog、Image2 历史稿和 raw archive 只在追溯原因时加载。详见 `~/.claude/skills/_shared/current-doc-loading.md`。
# /forge-design:全栈设计规划与文档管理
纯设计规划——**不写代码**。产出 DESIGN.md 和设计方案,交由 forge-design-impl 或 forge-eng 实现。
## 流程总览
```
门控判定(L1/L2/L3)
│
├── L1 完整设计 ──→ 竞品调研 → 美学方向(3+) → 配色/字体 → Token体系 → forge-design-lab 工作台(布局/比例/密度)→ 完整审计 → 0-10审查 → DESIGN.mdView the complete source on GitHubforge-design-impl
When your agent uses it
设计实现:把 DESIGN.md 转成代码,只改样式不改逻辑;CSS 优先、Token 驱动、反 AI 模板、原子提交,以真实截图和 CSS 断言验证。 触发方式:用户说"实现设计"、"forge-design-impl"、设计文档确认后需要写代码时。
What it loads into context
Frontmatter
87 tokensAlways available to the agent
SKILL.md
2,198 tokensWhen the skill is activated
Reference documents
824 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- 前置条件
- 流程
- 第1步:识别实现清单
- 第2步:实现设计变更
- 第3步:逐项实现 + 原子提交
- 第4步:质量验证
- Feature 状态管理
- 重要规则
Files
README.mddoc2,936 bytesSKILL.mdcore7,782 bytesSKILL.mdcore7,782 bytes
Read SKILL.md
> **文档落地路径**:遵循 forge-doc-policy 规范。完整白名单 + frontmatter schema 见
> `~/.claude/skills/forge-doc-policy/doc-paths.md`。
> **当前文档加载顺序**:先读项目 `CLAUDE.md`、`docs/README.md`、`docs/INDEX.md`,
> 再读 `docs/DESIGN.md` 当前真相源和相关模块附录;历史 changelog/raw 只在追溯旧决策时读取。
> 详细规则见 `~/.claude/skills/_shared/current-doc-loading.md`。
# /forge-design-impl:设计实现
将 DESIGN.md 的设计规范转化为代码。**只改样式和布局,不改业务逻辑。**
## 前置条件
1. DESIGN.md 必须存在且已通过 forge-design 审核(评分 ≥ B)
2. 如果有 `.features/{feature-id}/status.md`,确认 design 行为 `[✅ 已完成]`View the complete source on GitHubforge-design-lab
When your agent uses it
在真实 token、真实像素的 HTML 骨架上做页面与组件的设计决策:生成可点、可改、可存的设计工作台,按七层逐节点审查,保存即导出 token 与 CSS 并回写 DESIGN.md 的 token 表。用户说「开工作台」「看骨架」「讨论 XX 的设计稿」「改 token」「我保存好了,按调整后的来」时用;只要在争论比例、密度、一屏几张、行长、栏宽、留白这类要看见才能判断的问题,哪怕没提工作台也用;forge-design 第三步遇到页面、组件、布局决策时必调。也负责全站唯一的设计零件库(一套模板 + 逐条确认的定制 + 守门检查):说「零件库」「设计模板」「全站设计 token 总表」「这个算不算定制」「查一下有没有用模板外的值」时用。不处理:DESIGN.md 散文与评分(forge-design)、产品代码(forge-eng、forge-design-impl)、效果图气质预判(Image 2)、实现后截图验收(forge-qa)、设计概念问答(直接答)。
What it loads into context
Frontmatter
277 tokensAlways available to the agent
SKILL.md
5,782 tokensWhen the skill is activated
Reference documents
15,855 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- 定位与边界
- 按需读取
- 意图分流
- 工具
- S0 零件库:一套模板 + 有限的定制
- S1 适配:先知道这个项目有什么
- S2 线框:先确认结构,再画皮
- S3 骨架:真 token、真像素、可点
- S4 审查回合:读文件,不读截图
- S5 交接:让实现看到同一份值
- 和 forge-design 的接口
- 输出
- 红线
- 边界与失败处理
Scripts executed separately
scripts/_design_studio.pyscripts/adapt_tokens.pyscripts/build_template.jsscripts/build_tokens.pyscripts/check_system.pyscripts/compare_impl.mjsscripts/extract_system.pyscripts/merge_saved.pyscripts/render_design_table.pyscripts/scaffold_pack.pyscripts/serve.pyscripts/verify_pack.mjs
Files
README.mddoc5,335 bytesSKILL.mdcore20,464 bytesSKILL.mdcore20,464 bytesSKILL.mdcore20,464 bytesSKILL.mdcore20,464 bytesSKILL.mdcore20,464 bytesSKILL.mdcore20,464 bytesSKILL.mdcore20,464 bytesSKILL.mdcore20,464 bytesSKILL.mdcore20,464 bytesSKILL.mdcore20,464 bytesSKILL.mdcore20,464 bytesSKILL.mdcore20,464 bytesreferences/engine-hooks.mddoc8,502 bytesreferences/example-ai-search.mddoc3,862 bytesreferences/pitfalls.mddoc10,542 bytesreferences/seven-layers.mddoc6,341 bytesreferences/spec-schema.mddoc11,763 bytesreferences/system-pack.mddoc4,718 bytesscripts/_design_studio.pyruns3,128 bytesscripts/adapt_tokens.pyruns609 bytesscripts/build_template.jsruns2,078 bytesscripts/build_tokens.pyruns609 bytesscripts/check_system.pyruns11,450 bytesscripts/compare_impl.mjsruns6,580 bytesscripts/extract_system.pyruns30,463 bytesscripts/merge_saved.pyruns7,705 bytesscripts/render_design_table.pyruns6,291 bytesscripts/scaffold_pack.pyruns9,461 bytesscripts/serve.pyruns1,304 bytesscripts/verify_pack.mjsruns21,650 bytes
Read SKILL.md
# forge-design-lab — 在真比例骨架上定设计
交付一个页面包(骨架 HTML + `<page>.tokens.json` + 由它生成的 `.js` 与前端 `.tokens.css`),并跑完一轮闭环:适配 → 线框确认 → 骨架 → 七层审查 → 保存 → 交接。实现时看到的值和用户在骨架上看到的是同一份文件。
## 定位与边界
像一个把设计稿钉在墙上的美术指导:把「这一屏到底放得下几张、这一行到底多少个字、这个间距到底是 8 还是 12」讲透。手段是一个占满窗口、按真实 token 与真实像素渲染的骨架,右侧面板从顶往下七层逐节点提问;用户看不顺眼当场改值、当场变、点保存直写仓库。
核心立场:设计阶段用户要的是「看一眼就能判断」,判断完直接进实现。所以每个决策落成一个 token,token 只存在一处(tokens.json),骨架 `<link>` 的和前端 import 的是同一份生成的 css,组件 CSS 只写 `var()`。DESIGN.md 里的 token 表是从 json 生成的副产品,不是决策的载体。Image 2 生图画出来的比例不可信:v32.0 的「7fr:3fr、完整卡」看文字很合理,实机一屏只放得下 1.9 张,这就是文字掩盖比例的代价。
一次只处理一个模块(DESIGN.md 的一个模块号,或 feature-spec 的一个页面/组件)。
边界之外的交出去:DESIGN.md 散文规格、评分、AI 模板痕迹检测交 forge-design;把设计变成组件代码交 forge-eng / forge-design-impl(codex);气质与风格方向的效果图交 Image 2(visual-decision-layer);实现后的截图对比交 forge-qa;站点级 token(brand 色、字体族、字号阶梯)的修改交全站设计审查,本 skill 只读并可标「提议改动」;「要不要这个页面」交 forge-brainstorm / forge-prd。
View the complete source on GitHubforge-dev
When your agent uses it
开发调度器:接力 PRD 变更,主上下文只编排,子 skill(design/eng/qa)在独立上下文执行防 context rot;交互 / --auto / --resume 三模式。 触发方式:用户说"开始开发"、"实现需求"、"forge-dev"、PRD 更新后进入开发阶段时;说"端到端交付"、"全自动交付"、"一路到发布"时走 --full 尾段(原 forge-deliver 已退役并入)。
What it loads into context
Frontmatter
131 tokensAlways available to the agent
SKILL.md
4,276 tokensWhen the skill is activated
Reference documents
5,327 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- 前置脚本(每次先运行)
- 流程
- 上下文工程(核心设计)
- 模式说明
- 状态管理
- 第-1步:Brainstorm 感知
- 第0步:读取当前真相源 + Feature Spec 检查
- 第1步:Discussion 阶段(结构化偏好收集)
- 第2步:Research 阶段(技术调研)
- 第3步:分析与调度建议
- 第4步:Wave 并行调度子技能
- 第5步:汇总交付
- 验收操作清单
- 第6步(可选):发布尾段(--full)
- 单独调用模式
- Feature 状态管理(.features/ 架构)
- 重要规则
Files
README.mddoc3,532 bytesSKILL.mdcore15,476 bytesreferences/orchestration-details.mddoc16,524 bytes
Read SKILL.md
> **文档落地路径**:遵循 forge-doc-policy 规范。完整白名单 + frontmatter schema 见
> `~/.claude/skills/forge-doc-policy/doc-paths.md`。
> **当前文档加载顺序**:先读项目 `CLAUDE.md`、`docs/README.md`、`docs/INDEX.md`,
> 再读相关根级当前真相源和 `.features/{feature-id}/feature-spec.md`。
> 详细规则见 `~/.claude/skills/_shared/current-doc-loading.md`。
# /forge-dev:开发调度器
接力 `/forge-prd` 或 `/forge-brainstorm` 的产出,调度设计、工程、QA 子技能完成开发交付。
全程中文。
## 前置脚本(每次先运行)
View the complete source on GitHubforge-doc-policy
When your agent uses it
文档落地治理规范。统一管理 docs/ 目录下文档的写时约束、读时索引、生命周期标记。提供当前真相源白名单(doc-paths.md)+ frontmatter schema + 新项目一键脚手架(init-project.sh,已就绪)。所有 forge-* skill 的文档落地路径以本 skill 的 doc-paths.md 为准。触发方式:用户说"文档治理"、"文档放哪"、"docs 目录乱了"、"forge-doc-policy"、AI 准备创建任意 .md 或新目录前的自查。
What it loads into context
Frontmatter
144 tokensAlways available to the agent
SKILL.md
1,539 tokensWhen the skill is activated
Reference documents
6,694 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- 设计目标
- 文件清单(仅列已实现的文件)
- 装载方式(三选一,按场景)
- LLM 强校验铁律(每次创建 .md / 新目录前必须执行)
- 触发关键词
- 与其他 forge-* skill 的关系
- 版本与演进
Scripts executed separately
scripts/.gitkeepscripts/init-project.sh
Files
CHANGELOG.mddoc3,580 bytesREADME.mddoc3,736 bytesSKILL.mdcore5,078 bytesSKILL.mdcore5,078 bytesSKILL.mdcore5,078 bytesclaude-md-snippet.mddoc3,236 bytesdoc-paths.mddoc6,624 bytesfrontmatter-schema.mddoc4,637 byteshooks/.gitkeepasset86 bytesscripts/.gitkeepruns131 bytesscripts/init-project.shruns5,594 bytestemplates/.gitkeepasset107 bytes
Read SKILL.md
# /forge-doc-policy:文档落地治理规范
> 这是一个**规范型 skill**,不主动产出代码或文档,作为其他 forge-* skill 和 LLM 自觉行为的**当前真相源**。
>
> 全程中文。
---
## 设计目标
解决三层文档治理痛点:
| 层级 | 痛点 | 本 skill 提供 |
|---|---|---|View the complete source on GitHubforge-doc-release
When your agent uses it
发布后文档更新。读取所有项目文档,与 diff 交叉对照, 更新 README/ARCHITECTURE/CONTRIBUTING/CLAUDE.md 使之匹配已发布内容, 润色 CHANGELOG 语气,清理 TODOS,可选地更新 VERSION。 触发方式:用户说"更新文档"、"文档同步"、"forge-doc-release",或 forge-ship 之后、PR 合并之前由 forge-dev --full 调度。
What it loads into context
Frontmatter
152 tokensAlways available to the agent
SKILL.md
1,940 tokensWhen the skill is activated
Reference documents
4,084 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- 前置脚本(每次先运行)
- 第0步:检测基础分支
- 角色定义
- 执行手册(按需加载,执行时必读)
- 流程总览(9 步)
- 重要规则
Files
README.mddoc3,488 bytesSKILL.mdcore6,704 bytesSKILL.mdcore6,704 bytesreferences/release-details.mddoc10,995 bytes
Read SKILL.md
> **文档落地路径**:遵循 forge-doc-policy 规范。完整白名单 + frontmatter schema 见
> `~/.claude/skills/forge-doc-policy/doc-paths.md`。
> **当前文档加载顺序**:优先审查 `CLAUDE.md`、`docs/README.md`、`docs/INDEX.md`、
> 根级当前真相源、相关模块附录和 `.features`;`docs/archive/raw/` 只作历史证据,不纳入默认同步。
> 详细规则见 `~/.claude/skills/_shared/current-doc-loading.md`。
# /forge-doc-release:发布后文档更新
## 前置脚本(每次先运行)
```bash
_BRANCH=$(git branch --show-current 2>/dev/null || echo "unknown")
echo "当前分支: $_BRANCH"
```View the complete source on GitHubforge-eng
When your agent uses it
工程实现主力:管理 ENGINEERING.md,完整/轻量两模式;worktree 会话隔离、分级 TDD、验证门(证据先于断言)、任务原子化 Wave 并行、独立 commit。 触发方式:用户说"工程"、"实现"、"forge-eng",或 forge-dev 调度、需要实现代码变更时。
What it loads into context
Frontmatter
95 tokensAlways available to the agent
SKILL.md
3,968 tokensWhen the skill is activated
Reference documents
11,578 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- 流程总览
- 工程原则
- 三条铁律(来自 Superpowers,不可违反)
- 第0步:定位项目文档
- 第0.5步:模式选择
- 第1步:范围挑战
- 第2步:理解现状(迭代模式)
- 第2步(替代):从零创建 ENGINEERING.md
- 第3步:四章工程审查
- 第4步:工程方案设计
- 第5步:更新工程文档
- 第5.5步:创建 Worktree(会话级隔离)
- 第5.6-5.7步:Dev 环境准备(按需)
- 第6-7步:任务拆分 + Wave 并行执行(TDD + 验证门)
- 第8步:必需产出
- 第9步:确认与总结
- 第10步:分支收尾
- Feature 状态管理(.features/ 架构,仅完整模式)
- 资源
Files
README.mddoc4,169 bytesSKILL.mdcore14,343 bytesreferences/dev-environment.mddoc3,238 bytesreferences/engineering-template.mddoc8,824 bytesreferences/tdd-guide.mddoc5,777 bytesreferences/verification-checklist.mddoc4,865 bytesreferences/wave-execution.mddoc8,111 bytesreferences/worktree-guide.mddoc5,210 bytes
Read SKILL.md
> **文档落地路径**:遵循 forge-doc-policy 规范。完整白名单 + frontmatter schema 见
> `~/.claude/skills/forge-doc-policy/doc-paths.md`。
> **当前文档加载契约**:先读项目 `CLAUDE.md`、`docs/README.md`、`docs/INDEX.md` 和 `docs/ENGINEERING.md` 当前真相源;PRD/DESIGN 只读相关章节,长 changelog 和 raw archive 只在追溯历史原因时加载。详见 `~/.claude/skills/_shared/current-doc-loading.md`。
# /forge-eng:工程文档管理与代码实现 v2
管理项目的 ENGINEERING.md(前后端合并),基于 PRD + DESIGN.md 产出工程方案并实现。
集成 Worktree 隔离、分级 TDD、Verification Gate。
## 流程总览
```
完整模式:
第0步 定位文档 → 第0.5步 模式选择 → 第1步 范围挑战 → 第2步 理解现状View the complete source on GitHubforge-feature-doc
When your agent uses it
维护每个功能一份给人看的「需求设计文档」(docs/modules 下,一个功能一份):待拍板置顶,按需写背景、目标、流程、布局、状态、交互细节、业务规则、召回、AI 生成(prompt)、效果、成本、系统,先图后字,只写当前设计,末尾记关键改动,附出图与上线前检查。新建、更新、同步、补充这份文档都用它,别直接手改——它有固定写法和检查。用户说「出设计文档」「PRD 太长看不懂」「把设计文档同步一下」「重拍截图」「上线前看文档跟上没有」时用;用户抱怨看不到功能现在的设计、不知道最近改了什么时也用;forge 各阶段改了规则、文案、交互、布局、阈值、prompt、模型、架构后收尾也用,哪怕用户没明说。不处理写给 AI 的 PRD/DESIGN(forge-prd、forge-design)、骨架上定布局(forge-design-lab)、改 prompt 本身(prompt-craft)、进度(forge-status)。
What it loads into context
Frontmatter
270 tokensAlways available to the agent
SKILL.md
3,284 tokensWhen the skill is activated
Reference documents
8,474 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- 定位与边界
- 按需读取
- 意图分流
- 工具
- 新建
- 更新
- 出图
- 检查
- 输出
- 红线
- 边界与失败处理
- 各阶段怎么接
Scripts executed separately
scripts/annotate.mjsscripts/check.mjsscripts/render-diagrams.mjsscripts/scaffold.mjs
Files
README.mddoc4,648 bytesSKILL.mdcore11,412 bytesSKILL.mdcore11,412 bytesSKILL.mdcore11,412 bytesSKILL.mdcore11,412 bytesassets/diagrams/architecture.htmlasset960 bytesassets/diagrams/diagram.cssasset1,916 bytesassets/diagrams/flow.htmlasset964 bytesassets/diagrams/funnel.htmlasset1,010 bytesassets/diagrams/page-mock.htmlasset3,650 bytesassets/diagrams/pipeline.htmlasset1,023 bytesassets/diagrams/status-quo.htmlasset629 bytesassets/doc-template.mddoc2,958 bytesreferences/example-ai-search.mddoc1,976 bytesreferences/stage-map.mddoc2,979 bytesreferences/visuals.mddoc6,745 bytesreferences/writing-rules.mddoc9,297 bytesscripts/annotate.mjsruns4,442 bytesscripts/check.mjsruns7,143 bytesscripts/render-diagrams.mjsruns1,451 bytesscripts/scaffold.mjsruns3,572 bytes
Read SKILL.md
# forge-feature-doc — 每个功能一份给人看的需求设计文档
交付 `docs/modules/<功能>.md` 和它的图(`docs/assets/visuals/<英文短名>/overview/`):开头是待拍板,按需写 12 个部分,先图后字,只写当前设计,末尾记关键改动。配套三个脚本:出示意图、给真实页面截图加标注、上线前检查。
## 定位与边界
像一个会画图的产品搭档——把「这个功能长什么样、按什么规则跑、效果由哪些数决定、还缺你哪些决定」讲透:先放图,再用一两行字注释,不把 PRD、DESIGN 换个说法再讲一遍。
核心立场:读者是要拍板、注意力有限的人(按 ADHD 友好来写)。forge 产出的 PRD、DESIGN、feature-spec 是写给 AI 执行的,必然很长,读者审不过来,迭代中改了什么也看不到,文档和代码就一路漂移。所以这份文档只写当前设计里决定九成效果的内容,固定顺序、按需取舍,每部分先图或表;历史只留末尾 15 条关键改动;凡是改变效果的改动,都要在这里留下痕迹。
边界之外的交出去:写给 AI 的 PRD、feature-spec 交 forge-prd;DESIGN.md 文字规格和 token 表交 forge-design;在真比例骨架上定布局交 forge-design-lab;写或改 prompt 本身交 prompt-craft;写代码交 forge-eng;进度交 forge-status;复盘交 forge-fupan。对外文章、发布公告不在范围。
一次只处理一个功能。
View the complete source on GitHubforge-fupan
When your agent uses it
复盘 v3(Workbench 门禁型):启动本地 Workbench,用户在独立会话页确认想学的知识点和深度,按选择调研产出复盘文档; 同时落 2-3 条账本条目(记录/复盘/learnings.jsonl)供 bugfix/eng 开工回放与复发检测。 触发方式:用户说"总结知识"、"学习总结"、"复盘"、"可视化复盘"、"/forge-fupan"。
What it loads into context
Frontmatter
129 tokensAlways available to the agent
SKILL.md
11,672 tokensWhen the skill is activated
Reference documents
2,293 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- 设计说明(v3,2026-07-17 重构)
- 使用建议
- 输出位置
- 前置脚本(每次先运行)
- 文档结构
- 执行流程
- INDEX.md 规范
- 同会话迭代规范
- 约束规范
Scripts executed separately
parse_tokens.py../../tools/fupan-workbench/launcher.py
Files
README.mddoc4,317 bytesSKILL.mdcore41,280 bytesSKILL.mdcore41,280 bytesSKILL.mdcore41,280 bytesSKILL.mdcore41,280 bytesSKILL.mdcore41,280 bytesSKILL.mdcore41,280 bytesSKILL.mdcore41,280 bytesSKILL.mdcore41,280 bytesSKILL.mdcore41,280 bytesSKILL.mdcore41,280 bytesSKILL.mdcore41,280 bytesSKILL.mdcore41,280 bytesSKILL.mdcore41,280 bytesparse_tokens.pyruns12,682 bytesreferences/learnings-schema.mddoc3,324 bytes../../tools/fupan-workbench/launcher.pyruns8,814 bytes
Read SKILL.md
> **文档落地路径**:遵循 forge-doc-policy 规范。完整白名单 + frontmatter schema 见
> `~/.claude/skills/forge-doc-policy/doc-paths.md`。
# 复盘 — 协作知识沉淀与深度诊断
## 设计说明(v3,2026-07-17 重构)
v3 = v1 的 Workbench 门禁流程 + v2 的账本复利机制:
- **Workbench 是复盘的确认门禁**:AI 分析会话后把学习地图推到本地网页,用户在**独立会话页**(`/session/{task_id}`)勾选知识点和深度,提交后 AI 才继续调研写作。
- **Workbench 首页是所有复盘会话的历史列表**:进行中的在上,历史的(含已完成)在下,每个会话可点进独立页面回看当时的选择和生成的文档。
- **账本是副产出**(保留自 v2):每次复盘顺手落 2-3 条 learnings.jsonl 条目,bugfix/eng 开工时回放、下次复盘时做复发检测。写法见 [references/learnings-schema.md](references/learnings-schema.md)。
## 使用建议
View the complete source on GitHubforge-prd
When your agent uses it
产品诊断与 PRD 迭代:诊断根因(设计缺陷/实现偏离/PRD 遗漏),必要时反驳需求,更新 PRD 并生成带异常态门禁的 Feature Spec。 触发方式:用户说"更新PRD"、"调整需求"、"迭代PRD"、"forge-prd"、描述产品问题、需要修改产品需求时。
What it loads into context
Frontmatter
105 tokensAlways available to the agent
SKILL.md
4,559 tokensWhen the skill is activated
Reference documents
7,494 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- 流程总览
- 可视化规范
- 第0步:定位项目、PRD 与 CHANGELOG
- 第1步:理解现状(迭代模式)
- 第1步(替代):从零创建 PRD
- 第2步:诊断与审查(自适应深度)
- 第3步:方案确认
- 第3.5步:生成 Feature Spec(用户确认门禁)
- 第3.6步:生成/更新项目 CLAUDE.md
- 第4步:写入文档(用户确认后执行)
- Feature 状态管理(.features/ 架构)
- 完整性原则
- 资源
Files
README.mddoc3,963 bytesSKILL.mdcore17,275 bytesreferences/feature-spec-template.mddoc4,403 bytesreferences/prd-details.mddoc9,660 bytesreferences/prd-template.mddoc3,891 bytesreferences/project-claude-md-template.mddoc4,695 bytes
Read SKILL.md
> **文档落地路径**:遵循 forge-doc-policy 规范。完整白名单 + frontmatter schema 见
> `~/.claude/skills/forge-doc-policy/doc-paths.md`。
> **当前文档加载契约**:先读项目 `CLAUDE.md`、`docs/README.md`、`docs/INDEX.md` 和根级当前真相源;长 changelog 和 raw archive 只在追溯历史原因时加载。详见 `~/.claude/skills/_shared/current-doc-loading.md`。
# /forge-prd:产品诊断与 PRD 迭代管理器
## 流程总览
全程中文。每个步骤结束后暂停等待用户反馈。
```
用户描述问题/需求
│
▼View the complete source on GitHubforge-qa
When your agent uses it
QA 纯验收(只测不修):Mode A 完整验收(test-spec → 10 维度断言引擎 → 报告 + User Gate);Mode B 供 forge-bugfix P6 调用做单 bug 回归并回填 BF 报告。 铁律:每个测试必须有 pass/fail 和深层断言;console.error 零容忍;不猜端口,只用传入的 app_url。 触发方式:Mode A 用户说"测试"、"QA"、"forge-qa"或 forge-dev 调度;Mode B 由 forge-bugfix P6 调用(传 review_doc)。
What it loads into context
Frontmatter
190 tokensAlways available to the agent
SKILL.md
3,894 tokensWhen the skill is activated
Reference documents
36,705 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- 调用模式
- 三层架构
- 铁律
- 定位说明
- 完整流程
- 报告产出后的出口
- 前置脚本
- 执行手册(按需加载,执行时必读)
- Feature 状态管理
- 重要规则
Scripts executed separately
scripts/qa-runner.mjs
Files
README.mddoc4,560 bytesSKILL.mdcore13,145 bytesSKILL.mdcore13,145 bytesSKILL.mdcore13,145 bytesreferences/mode-a-execution.mddoc42,501 bytesreferences/mode-b-regression.mddoc7,462 bytesreferences/qa-template.mddoc6,439 bytesreferences/test-dimensions.mddoc66,467 bytesscripts/qa-runner.mjsruns33,255 bytes
Read SKILL.md
> **文档落地路径**:遵循 forge-doc-policy 规范。完整白名单 + frontmatter schema 见
> `~/.claude/skills/forge-doc-policy/doc-paths.md`。
> **当前文档加载顺序**:完整 QA 先读项目 `CLAUDE.md`、`docs/README.md`、`docs/INDEX.md`、
> `docs/QA.md` 当前验收手册和相关 `.features/{feature-id}/feature-spec.md`;单 bug 回归读取活跃 BF 报告。
> 详细规则见 `~/.claude/skills/_shared/current-doc-loading.md`。
# /forge-qa:QA 验收与测试报告
**纯验收模式:测试 + 报告,不修代码。** 发现的问题生成结构化 bug 记录;单 bug 回归时回填 Bug 修复验收报告。
## 调用模式
forge-qa 支持两种调用模式,**入口判断在前置脚本阶段**完成(见"前置脚本"节)。
View the complete source on GitHubforge-review
When your agent uses it
上线前 PR 审查。分析当前分支与基础分支的 diff,检查 SQL 安全、竞态条件、 LLM 信任边界、枚举完整性等测试捕获不到的结构性问题。发现问题直接修复。 触发方式:用户说"review"、"审查代码"、"上线前检查"、"forge-review",或 forge-dev --full 调度。 与内置 code-review/verify 的分工:forge 工作流内的上线前结构性审查用本 skill;用户点名 /code-review 或 /verify 时用对应内置 skill。
What it loads into context
Frontmatter
177 tokensAlways available to the agent
SKILL.md
2,278 tokensWhen the skill is activated
Reference documents
874 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- 前置脚本(每次先运行)
- 第0步:确定基础分支
- 第1步:检查分支状态
- 第2步:获取完整 diff
- 第3步:两轮审查
- 第4步:修复优先原则
- 第5步:TODOS 交叉检查
- 第6步:文档过时检查
- 重要规则
Files
README.mddoc3,178 bytesSKILL.mdcore8,045 bytesSKILL.mdcore8,045 bytesSKILL.mdcore8,045 bytesSKILL.mdcore8,045 bytesSKILL.mdcore8,045 bytesSKILL.mdcore8,045 bytesSKILL.mdcore8,045 bytes
Read SKILL.md
> **文档落地路径**:遵循 forge-doc-policy 规范。完整白名单 + frontmatter schema 见
> `~/.claude/skills/forge-doc-policy/doc-paths.md`。
> **当前文档加载顺序**:需要判断需求/设计/工程口径时,先读项目 `CLAUDE.md`、
> `docs/README.md`、`docs/INDEX.md` 和相关根级当前真相源;历史 archive 只作追溯证据。
> 详细规则见 `~/.claude/skills/_shared/current-doc-loading.md`。
# /forge-review:代码审查
## 前置脚本(每次先运行)
```bash
_BRANCH=$(git branch --show-current 2>/dev/null || echo "unknown")
echo "当前分支: $_BRANCH"
```View the complete source on GitHubforge-ship
When your agent uses it
发布上线:PR only(建 PR 即停)或 Full ship(合并 PR + 同步本地基础分支);测试失败不发布、不 force push,状态汇报严格区分提交/推送/合并/部署。 触发方式:用户说"ship"、"发布"、"合并上线"、"发 PR"。
What it loads into context
Frontmatter
121 tokensAlways available to the agent
SKILL.md
2,904 tokensWhen the skill is activated
Reference documents
2,099 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- 核心原则
- 前置脚本
- 第0步:确定 Ship 模式和基础分支
- 第0.5步:生产写面授权门
- 第1步:安全检查
- 第2步:同步基础分支到当前功能分支
- 第3步:运行项目验证
- 第4步:发布前 diff 审查
- 第5步:更新 CHANGELOG
- 第6步:最终提交
- 第7步:推送当前分支
- 第8步:创建或更新 PR
- 第9步:PR 合并前检查
- 第10步:合并 PR 以更新远程基础分支
- 第11步:同步本地基础分支 worktree
- 第12步:发布完成总结
- 重要规则
Files
README.mddoc3,760 bytesSKILL.mdcore10,785 bytesSKILL.mdcore10,785 bytesSKILL.mdcore10,785 bytesSKILL.mdcore10,785 bytesSKILL.mdcore10,785 bytesSKILL.mdcore10,785 bytesSKILL.mdcore10,785 bytesSKILL.mdcore10,785 bytesSKILL.mdcore10,785 bytesSKILL.mdcore10,785 bytesSKILL.mdcore10,785 bytesSKILL.mdcore10,785 bytesSKILL.mdcore10,785 bytesreferences/merge-and-sync.mddoc3,725 bytes
Read SKILL.md
> **文档落地路径**:遵循 forge-doc-policy 规范。完整白名单 + frontmatter schema 见
> `~/.claude/skills/forge-doc-policy/doc-paths.md`。
> **当前文档加载顺序**:涉及文档更新时,先读项目 `CLAUDE.md`、`docs/README.md`、
> `docs/INDEX.md` 和相关根级当前真相源;`archive/raw` 只作历史证据。
> 详细规则见 `~/.claude/skills/_shared/current-doc-loading.md`。
# /forge-ship:发布上线
## 核心原则
`ship` 不是“创建 PR 就结束”。它有两个模式:
- **PR only**:提交、推送、创建或更新 PR,然后停止。
- **Full ship**:提交、推送、创建或更新 PR,检查 PR 状态,合并 PR 到远程基础分支,再把本地基础分支 worktree 同步到 `origin/<基础分支>`。View the complete source on GitHubforge-status
When your agent uses it
并行会话巡检:扫 .forge/active.md,按硬信号(worktree 是否存在、分支是否已合并)判僵尸,一次确认批量清理并联动 backlog;不用时间戳启发式。 触发方式:用户说"forge 状态"、"看下谁在跑"、"清理 worktree"、"删掉没用的 worktree"、"forge-status";forge-bugfix 启动时只读巡检。删除 worktree 目录只在用户明确要求时按安全流程(列清单确认 → 停服务 → -z 打包并核对文件数 → 删除)执行。
What it loads into context
Frontmatter
180 tokensAlways available to the agent
SKILL.md
3,216 tokensWhen the skill is activated
Reference documents
1,013 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- 设计哲学
- 两种调用模式
- 流程
- backlog.md 联动清理
- 删除 worktree 目录(仅用户明确要求时)
- 铁律
- 典型使用场景
Files
README.mddoc3,597 bytesSKILL.mdcore10,216 bytesSKILL.mdcore10,216 bytesSKILL.mdcore10,216 bytesSKILL.mdcore10,216 bytesSKILL.mdcore10,216 bytesSKILL.mdcore10,216 bytes
Read SKILL.md
> **文档落地路径**:遵循 forge-doc-policy 规范。完整白名单 + frontmatter schema 见
> `~/.claude/skills/forge-doc-policy/doc-paths.md`。
# /forge-status:并行会话巡检 + 清理
## 设计哲学
**只读扫描 + 一次确认 + 硬信号判定。**
- 多会话并行的心跳文件是 `.forge/active.md`,当前由 forge-bugfix 在领取任务时追加(P2/P3 之后登记)、由 forge-fupan 在会话结束时清理
- 但人会漏复盘、会话会崩掉、worktree 可能被手动删,导致 active.md 里残留"僵尸"记录
- 本 skill 专治僵尸:扫一遍表 → 按硬信号判活/死 → 让你确认后清理
**硬信号(僵尸判定)**:View the complete source on GitHubSkills included
- forge
- forge-deliver
- forge-bugfix
- forge-design
- forge-design-lab
- forge-eng
- forge-prd
- forge-review
- forge-ship
- forge-design
- forge-prd
- forge-brainstorm
- forge-bugfix
- forge-design
- forge-design-impl
- forge-design-lab
- forge-dev
- forge-doc-policy
- forge-doc-release
- forge-eng
- forge-feature-doc
- forge-fupan
- forge-prd
- forge-qa
- forge-review
- forge-ship
- forge-status
Repository facts
- License
- MIT
- Created
- Mar 29, 2026
- Last pushed
- Oct 26, 2026
- Forks
- 2
- Open issues
- 0
- Project activity
- Active
Before you install
Network or broad shellAutomated signals, not a guarantee
Checked Nov 5, 2026
Not fully analyzed: some files were too long, unreadable or missing. This never lowers the level.
Show 258 notes
SKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedSKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedSKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedassets/forge-architecture.svg:1Analysis incomplete: physical or joined line exceeds character limitassets/forge-deliver-comparison.svg:1Analysis incomplete: physical or joined line exceeds character limitassets/forge-deliver-v2-flow.svg:1Analysis incomplete: physical or joined line exceeds character limitassets/forge-eng-internals.svg:1Analysis incomplete: physical or joined line exceeds character limitassets/forge-workflow.svg:1Analysis incomplete: physical or joined line exceeds character limittools/fupan-workbench/static/assets/index-DffckMrb.js:9Analysis incomplete: physical or joined line exceeds character limittools/fupan-workbench/static/assets/index-DffckMrb.js:7Analysis incomplete: physical or joined line exceeds character limittools/fupan-workbench/static/assets/index-DffckMrb.js:8Analysis incomplete: physical or joined line exceeds character limittools/fupan-workbench/static/assets/index-DffckMrb.js:33Analysis incomplete: physical or joined line exceeds character limittools/fupan-workbench/static/assets/index-DffckMrb.js:31Analysis incomplete: physical or joined line exceeds character limittools/fupan-workbench/static/assets/index-DffckMrb.js:32Analysis incomplete: physical or joined line exceeds character limittools/fupan-workbench/static/assets/index-DffckMrb.js:37[Credential-related source omitted]tools/fupan-workbench/static/assets/index-DffckMrb.js:35Analysis incomplete: physical or joined line exceeds character limittools/fupan-workbench/static/assets/index-DffckMrb.js:34Analysis incomplete: physical or joined line exceeds character limittools/fupan-workbench/static/assets/index-DffckMrb.js:38Analysis incomplete: physical or joined line exceeds character limittools/fupan-workbench/static/assets/index-DffckMrb.js:36Analysis incomplete: physical or joined line exceeds character limittools/fupan-workbench/static/assets/index-DffckMrb.js:40Analysis incomplete: physical or joined line exceeds character limit
- 10 broad permissionsin 10 files: 2026-07-04-forge-deliver-retired/SKILL.md:1 forge-bugfix/SKILL.md:1 forge-review/SKILL.md:1 and 7 more
- 7 dangerous shell commandsin 4 files: install.sh:130 forge-bugfix/references/p3-p5-fix-loop.md:148 forge-doc-release/references/release-details.md:251 and 1 more
- 776 network referencesin 58 files: tools/fupan-workbench/frontend/package-lock.json:19 forge-design/data/typography.csv:1 forge-design/data/typography.csv:1 and 55 more
- No instruction overrides
- 51 executable scriptsin 50 files: tools/fupan-workbench/launcher.py:1 _archive/snapshots/2026-09-20-design-lab/workbench-original/tokens_build.py:1 _archive/snapshots/2026-09-20-design-lab/workbench-original/workbench.js:1 and 47 more
- 25 references to secretsin 16 files: skills/_shared/generate_image2.py:5 evals/forge-design-lab/system/run_system_eval.py:260 forge-fupan/SKILL.md:676 and 13 more
- No requests to vote in Hot
Show all 890 signals by file
CHANGELOG.md
README.md
- Network accessline 10
[](LICENSE) - Network accessline 11
[](https://claude.ai/code) - Network accessline 12
[]() - Network accessline 13
[](https://github.com/antonailog/forge-skills/releases) - Network accessline 131
从一句想法「我想做一个番茄钟网页,专心工作 25 分钟、休息 5 分钟,能看到今天完成了几个」开始,按 Forge 的流程一步步做到合并上线,中间还修了一个真实的 bug。代码、需求、设计、验收报告都在示范仓库 [forge-demo-pomodoro](https://github.com/antonailog/forge-demo-pomodoro),每个 Skill 在这次示范里拿到了什么、做了什么、交出了什么,记在 [examples/pomodoro/](examp - Network accessline 133
需要用户拍板的地方由 AI 按事先写好的需求设定代为确认,记录里每一处都有标注;写代码那几步由 [codex-delegate](https://github.com/antonailog/skills/tree/main/skills/codex-delegate) 派给本机 Codex 写、Claude 验收。 - Network accessline 309
# 克隆到本地 git clone https://github.com/antonailog/forge-skills.git - Network accessline 310
git clone https://github.com/antonailog/forge-skills.git - Network accessline 331
**forge-design-lab 另需 [design-studio](https://github.com/antonailog/design-studio)**(工作台服务和 token 工具在那里):`git clone https://github.com/antonailog/design-studio.git ~/.design-studio`,`install.sh` 会检测并提示。它是独立仓库,要单独 `git pull` 更新。skill 清单自动发现( - Network accessline 436
MIT License © [antonailog](https://github.com/antonailog)
_archive/2026-07-04-forge-deliver-retired/SKILL.md
- Broad permissionsline 1
Bash
_archive/document-driven-dev-guide-original.md
- Network accessline 343
上下文工程和 Wave 并行执行机制参考了 [GSD (Get Shit Done)](https://github.com/gsd-build/get-shit-done) 框架。
_archive/snapshots/2026-09-20-design-lab/visual-decision-layer.md
- Access to secretsline 76
[Credential-related source omitted]
_archive/snapshots/2026-09-20-design-lab/workbench-original/tokens_build.py
- Executable scriptline 1
#!/opt/homebrew/bin/python3
_archive/snapshots/2026-09-20-design-lab/workbench-original/workbench.js
- Executable scriptline 1
Executable file
_archive/snapshots/2026-10-10-feature-doc/forge-bugfix/SKILL.md
- Broad permissionsline 1
Bash
_archive/snapshots/2026-10-10-feature-doc/forge-design-lab/SKILL.md
_archive/snapshots/2026-10-10-feature-doc/forge-review/SKILL.md
- Broad permissionsline 1
Bash
_archive/snapshots/2026-10-10-feature-doc/forge-ship/SKILL.md
- Broad permissionsline 1
Bash
_archive/snapshots/2026-10-26-defensive-design/forge-design/data/products.csv
- Access to secretsline 112
[Credential-related source omitted]
_archive/snapshots/2026-10-26-defensive-design/forge-design/data/typography.csv
- Network accessline 1
No,Font Pairing Name,Category,Heading Font,Body Font,Mood/Style Keywords,Best For,Google Fonts URL,CSS Import,Tailwind Config,Notes 1,Classic Elegant,"Serif + Sans",Playfair Display,Inter,"elegant, luxury, sophisticated, timeless, premium, - Network accessline 2
1,Classic Elegant,"Serif + Sans",Playfair Display,Inter,"elegant, luxury, sophisticated, timeless, premium, editorial","Luxury brands, fashion, spa, beauty, editorial, magazines, high-end e-commerce","https://fonts.google.com/share?selectio - Network accessline 3
2,Modern Professional,"Sans + Sans",Poppins,Open Sans,"modern, professional, clean, corporate, friendly, approachable","SaaS, corporate sites, business apps, startups, professional services","https://fonts.google.com/share?selection.family= - Network accessline 4
3,Tech Startup,"Sans + Sans",Space Grotesk,DM Sans,"tech, startup, modern, innovative, bold, futuristic","Tech companies, startups, SaaS, developer tools, AI products","https://fonts.google.com/share?selection.family=DM+Sans:wght@400;500;70 - Network accessline 5
4,Editorial Classic,"Serif + Serif",Cormorant Garamond,Libre Baskerville,"editorial, classic, literary, traditional, refined, bookish","Publishing, blogs, news sites, literary magazines, book covers","https://fonts.google.com/share?selectio - Network accessline 6
5,Minimal Swiss,"Sans + Sans",Inter,Inter,"minimal, clean, swiss, functional, neutral, professional","Dashboards, admin panels, documentation, enterprise apps, design systems","https://fonts.google.com/share?selection.family=Inter:wght@300; - Network accessline 7
6,Playful Creative,"Display + Sans",Fredoka,Nunito,"playful, friendly, fun, creative, warm, approachable","Children's apps, educational, gaming, creative tools, entertainment","https://fonts.google.com/share?selection.family=Fredoka:wght@40 - Network accessline 8
7,Bold Statement,"Display + Sans",Bebas Neue,Source Sans 3,"bold, impactful, strong, dramatic, modern, headlines","Marketing sites, portfolios, agencies, event pages, sports","https://fonts.google.com/share?selection.family=Bebas+Neue|Sourc - Network accessline 9
8,Wellness Calm,"Serif + Sans",Lora,Raleway,"calm, wellness, health, relaxing, natural, organic","Health apps, wellness, spa, meditation, yoga, organic brands","https://fonts.google.com/share?selection.family=Lora:wght@400;500;600;700|Ralew - Network accessline 10
9,Developer Mono,"Mono + Sans",JetBrains Mono,IBM Plex Sans,"code, developer, technical, precise, functional, hacker","Developer tools, documentation, code editors, tech blogs, CLI apps","https://fonts.google.com/share?selection.family=IBM+ - Network accessline 11
10,Retro Vintage,"Display + Serif",Abril Fatface,Merriweather,"retro, vintage, nostalgic, dramatic, decorative, bold","Vintage brands, breweries, restaurants, creative portfolios, posters","https://fonts.google.com/share?selection.family=Ab - Network accessline 12
11,Geometric Modern,"Sans + Sans",Outfit,Work Sans,"geometric, modern, clean, balanced, contemporary, versatile","General purpose, portfolios, agencies, modern brands, landing pages","https://fonts.google.com/share?selection.family=Outfit:w - Network accessline 13
12,Luxury Serif,"Serif + Sans",Cormorant,Montserrat,"luxury, high-end, fashion, elegant, refined, premium","Fashion brands, luxury e-commerce, jewelry, high-end services","https://fonts.google.com/share?selection.family=Cormorant:wght@400;5 - Network accessline 14
13,Friendly SaaS,"Sans + Sans",Plus Jakarta Sans,Plus Jakarta Sans,"friendly, modern, saas, clean, approachable, professional","SaaS products, web apps, dashboards, B2B, productivity tools","https://fonts.google.com/share?selection.family=P - Network accessline 15
14,News Editorial,"Serif + Sans",Newsreader,Roboto,"news, editorial, journalism, trustworthy, readable, informative","News sites, blogs, magazines, journalism, content-heavy sites","https://fonts.google.com/share?selection.family=Newsreader - Network accessline 16
15,Handwritten Charm,"Script + Sans",Caveat,Quicksand,"handwritten, personal, friendly, casual, warm, charming","Personal blogs, invitations, creative portfolios, lifestyle brands","https://fonts.google.com/share?selection.family=Caveat:wgh - Network accessline 17
16,Corporate Trust,"Sans + Sans",Lexend,Source Sans 3,"corporate, trustworthy, accessible, readable, professional, clean","Enterprise, government, healthcare, finance, accessibility-focused","https://fonts.google.com/share?selection.family= - Network accessline 18
17,Brutalist Raw,"Mono + Mono",Space Mono,Space Mono,"brutalist, raw, technical, monospace, minimal, stark","Brutalist designs, developer portfolios, experimental, tech art","https://fonts.google.com/share?selection.family=Space+Mono:wght@4 - Network accessline 19
18,Fashion Forward,"Sans + Sans",Syne,Manrope,"fashion, avant-garde, creative, bold, artistic, edgy","Fashion brands, creative agencies, art galleries, design studios","https://fonts.google.com/share?selection.family=Manrope:wght@300;400;50 - Network accessline 20
19,Soft Rounded,"Sans + Sans",Varela Round,Nunito Sans,"soft, rounded, friendly, approachable, warm, gentle","Children's products, pet apps, friendly brands, wellness, soft UI","https://fonts.google.com/share?selection.family=Nunito+Sans:wg - Network accessline 21
20,Premium Sans,"Sans + Sans",Satoshi,General Sans,"premium, modern, clean, sophisticated, versatile, balanced","Premium brands, modern agencies, SaaS, portfolios, startups","https://fonts.google.com/share?selection.family=DM+Sans:wght@400; - Network accessline 22
21,Vietnamese Friendly,"Sans + Sans",Be Vietnam Pro,Noto Sans,"vietnamese, international, readable, clean, multilingual, accessible","Vietnamese sites, multilingual apps, international products","https://fonts.google.com/share?selection.fam - Network accessline 23
22,Japanese Elegant,"Serif + Sans",Noto Serif JP,Noto Sans JP,"japanese, elegant, traditional, modern, multilingual, readable","Japanese sites, Japanese restaurants, cultural sites, anime/manga","https://fonts.google.com/share?selection.fam - Network accessline 24
23,Korean Modern,"Sans + Sans",Noto Sans KR,Noto Sans KR,"korean, modern, clean, professional, multilingual, readable","Korean sites, K-beauty, K-pop, Korean businesses, multilingual","https://fonts.google.com/share?selection.family=Noto+Sa - Network accessline 25
24,Chinese Traditional,"Serif + Sans",Noto Serif TC,Noto Sans TC,"chinese, traditional, elegant, cultural, multilingual, readable","Traditional Chinese sites, cultural content, Taiwan/Hong Kong markets","https://fonts.google.com/share?selec - Network accessline 26
25,Chinese Simplified,"Sans + Sans",Noto Sans SC,Noto Sans SC,"chinese, simplified, modern, professional, multilingual, readable","Simplified Chinese sites, mainland China market, business apps","https://fonts.google.com/share?selection.fam - Network accessline 27
26,Arabic Elegant,"Serif + Sans",Noto Naskh Arabic,Noto Sans Arabic,"arabic, elegant, traditional, cultural, RTL, readable","Arabic sites, Middle East market, Islamic content, bilingual sites","https://fonts.google.com/share?selection.famil - Network accessline 28
27,Thai Modern,"Sans + Sans",Noto Sans Thai,Noto Sans Thai,"thai, modern, readable, clean, multilingual, accessible","Thai sites, Southeast Asia, tourism, Thai restaurants","https://fonts.google.com/share?selection.family=Noto+Sans+Thai:wgh - Network accessline 29
28,Hebrew Modern,"Sans + Sans",Noto Sans Hebrew,Noto Sans Hebrew,"hebrew, modern, RTL, clean, professional, readable","Hebrew sites, Israeli market, Jewish content, bilingual sites","https://fonts.google.com/share?selection.family=Noto+Sans - Network accessline 30
29,Legal Professional,"Serif + Sans",EB Garamond,Lato,"legal, professional, traditional, trustworthy, formal, authoritative","Law firms, legal services, contracts, formal documents, government","https://fonts.google.com/share?selection.fami - Network accessline 31
30,Medical Clean,"Sans + Sans",Figtree,Noto Sans,"medical, clean, accessible, professional, healthcare, trustworthy","Healthcare, medical clinics, pharma, health apps, accessibility","https://fonts.google.com/share?selection.family=Figtree: - Network accessline 32
31,Financial Trust,"Sans + Sans",IBM Plex Sans,IBM Plex Sans,"financial, trustworthy, professional, corporate, banking, serious","Banks, finance, insurance, investment, fintech, enterprise","https://fonts.google.com/share?selection.family=I - Network accessline 33
32,Real Estate Luxury,"Serif + Sans",Cinzel,Josefin Sans,"real estate, luxury, elegant, sophisticated, property, premium","Real estate, luxury properties, architecture, interior design","https://fonts.google.com/share?selection.family=Cinze - Network accessline 34
33,Restaurant Menu,"Serif + Sans",Playfair Display SC,Karla,"restaurant, menu, culinary, elegant, foodie, hospitality","Restaurants, cafes, food blogs, culinary, hospitality","https://fonts.google.com/share?selection.family=Karla:wght@300;4 - Network accessline 35
34,Art Deco,"Display + Sans",Poiret One,Didact Gothic,"art deco, vintage, 1920s, elegant, decorative, gatsby","Vintage events, art deco themes, luxury hotels, classic cocktails","https://fonts.google.com/share?selection.family=Didact+Gothic - Network accessline 36
35,Magazine Style,"Serif + Sans",Libre Bodoni,Public Sans,"magazine, editorial, publishing, refined, journalism, print","Magazines, online publications, editorial content, journalism","https://fonts.google.com/share?selection.family=Libre+B - Network accessline 37
36,Crypto/Web3,"Sans + Sans",Orbitron,Exo 2,"crypto, web3, futuristic, tech, blockchain, digital","Crypto platforms, NFT, blockchain, web3, futuristic tech","https://fonts.google.com/share?selection.family=Exo+2:wght@300;400;500;600;700|Orb - Network accessline 38
37,Gaming Bold,"Display + Sans",Russo One,Chakra Petch,"gaming, bold, action, esports, competitive, energetic","Gaming, esports, action games, competitive sports, entertainment","https://fonts.google.com/share?selection.family=Chakra+Petch: - Network accessline 39
38,Indie/Craft,"Display + Sans",Amatic SC,Cabin,"indie, craft, handmade, artisan, organic, creative","Craft brands, indie products, artisan, handmade, organic products","https://fonts.google.com/share?selection.family=Amatic+SC:wght@400;700 - Network accessline 40
39,Startup Bold,"Sans + Sans",Clash Display,Satoshi,"startup, bold, modern, innovative, confident, dynamic","Startups, pitch decks, product launches, bold brands","https://fonts.google.com/share?selection.family=Outfit:wght@400;500;600;700| - Network accessline 41
40,E-commerce Clean,"Sans + Sans",Rubik,Nunito Sans,"ecommerce, clean, shopping, product, retail, conversion","E-commerce, online stores, product pages, retail, shopping","https://fonts.google.com/share?selection.family=Nunito+Sans:wght@300 - Network accessline 42
41,Academic/Research,"Serif + Sans",Crimson Pro,Atkinson Hyperlegible,"academic, research, scholarly, accessible, readable, educational","Universities, research papers, academic journals, educational","https://fonts.google.com/share?selecti - Network accessline 43
42,Dashboard Data,"Mono + Sans",Fira Code,Fira Sans,"dashboard, data, analytics, code, technical, precise","Dashboards, analytics, data visualization, admin panels","https://fonts.google.com/share?selection.family=Fira+Code:wght@400;500;600 - Network accessline 44
43,Music/Entertainment,"Display + Sans",Righteous,Poppins,"music, entertainment, fun, energetic, bold, performance","Music platforms, entertainment, events, festivals, performers","https://fonts.google.com/share?selection.family=Poppins:wgh - Network accessline 45
44,Minimalist Portfolio,"Sans + Sans",Archivo,Space Grotesk,"minimal, portfolio, designer, creative, clean, artistic","Design portfolios, creative professionals, minimalist brands","https://fonts.google.com/share?selection.family=Archivo:wg - Network accessline 46
45,Kids/Education,"Display + Sans",Baloo 2,Comic Neue,"kids, education, playful, friendly, colorful, learning","Children's apps, educational games, kid-friendly content","https://fonts.google.com/share?selection.family=Baloo+2:wght@400;500; - Network accessline 47
46,Wedding/Romance,"Script + Serif",Great Vibes,Cormorant Infant,"wedding, romance, elegant, script, invitation, feminine","Wedding sites, invitations, romantic brands, bridal","https://fonts.google.com/share?selection.family=Cormorant+Infa - Network accessline 48
47,Science/Tech,"Sans + Sans",Exo,Roboto Mono,"science, technology, research, data, futuristic, precise","Science, research, tech documentation, data-heavy sites","https://fonts.google.com/share?selection.family=Exo:wght@300;400;500;600;700 - Network accessline 49
48,Accessibility First,"Sans + Sans",Atkinson Hyperlegible,Atkinson Hyperlegible,"accessible, readable, inclusive, WCAG, dyslexia-friendly, clear","Accessibility-critical sites, government, healthcare, inclusive design","https://fonts.googl - Network accessline 50
49,Sports/Fitness,"Sans + Sans",Barlow Condensed,Barlow,"sports, fitness, athletic, energetic, condensed, action","Sports, fitness, gyms, athletic brands, competition","https://fonts.google.com/share?selection.family=Barlow+Condensed:wght@4 - Network accessline 51
50,Luxury Minimalist,"Serif + Sans",Bodoni Moda,Jost,"luxury, minimalist, high-end, sophisticated, refined, premium","Luxury minimalist brands, high-end fashion, premium products","https://fonts.google.com/share?selection.family=Bodoni+Moda - Network accessline 52
51,Tech/HUD Mono,"Mono + Mono",Share Tech Mono,Fira Code,"tech, futuristic, hud, sci-fi, data, monospaced, precise","Sci-fi interfaces, developer tools, cybersecurity, dashboards","https://fonts.google.com/share?selection.family=Fira+Code:w - Network accessline 53
52,Pixel Retro,"Display + Sans",Press Start 2P,VT323,"pixel, retro, gaming, 8-bit, nostalgic, arcade","Pixel art games, retro websites, creative portfolios","https://fonts.google.com/share?selection.family=Press+Start+2P|VT323","@import url - Network accessline 54
53,Neubrutalist Bold,"Display + Sans",Lexend Mega,Public Sans,"bold, neubrutalist, loud, strong, geometric, quirky","Neubrutalist designs, Gen Z brands, bold marketing","https://fonts.google.com/share?selection.family=Lexend+Mega:wght@100.. - Network accessline 55
54,Academic/Archival,"Serif + Serif",EB Garamond,Crimson Text,"academic, old-school, university, research, serious, traditional","University sites, archives, research papers, history","https://fonts.google.com/share?selection.family=Crimson - Network accessline 56
55,Spatial Clear,"Sans + Sans",Inter,Inter,"spatial, legible, glass, system, clean, neutral","Spatial computing, AR/VR, glassmorphism interfaces","https://fonts.google.com/share?selection.family=Inter:wght@300;400;500;600","@import url('htt - Network accessline 57
56,Kinetic Motion,"Display + Mono",Syncopate,Space Mono,"kinetic, motion, futuristic, speed, wide, tech","Music festivals, automotive, high-energy brands","https://fonts.google.com/share?selection.family=Space+Mono:wght@400;700|Syncopate:wg - Network accessline 58
57,Gen Z Brutal,"Display + Sans",Anton,Epilogue,"brutal, loud, shouty, meme, internet, bold","Gen Z marketing, streetwear, viral campaigns","https://fonts.google.com/share?selection.family=Anton|Epilogue:wght@400;500;600;700","@import url(' - Network accessline 59
58,Minimalist Monochrome Editorial,"Serif + Serif + Mono (Triple Stack)",Playfair Display,Source Serif 4,"monochrome, editorial, austere, typographic, pocket manifesto, luxury, high contrast, brutalist mobile","Luxury fashion mobile apps, e - Network accessline 60
59,Modern Dark Cinema (Inter System),"Sans + Mono",Inter,Inter,"dark, cinematic, technical, precision, clean, premium, developer, professional, high-end utility","Developer tools, fintech/trading, AI dashboards, streaming platforms, high-en - Network accessline 61
60,SaaS Mobile Boutique (Calistoga + Inter),"Display Serif + Sans + Mono",Calistoga,Inter,"saas, boutique, electric, warm, editorial, bold, premium, fintech, business, dual font, human warmth","B2B SaaS mobile, fintech apps, analytics dashb - Network accessline 62
61,Terminal CLI Monospace,"Mono + Mono (Single Family)",JetBrains Mono,JetBrains Mono,"terminal, cli, hacker, monospace, matrix, developer, retro-future, command line, precision, OLED","Developer tools, Web3/blockchain apps, hacker aestheti - Network accessline 63
62,Kinetic Brutalism (Space Grotesk),"Geometric Sans (Single Dominant)",Space Grotesk,Space Grotesk,"kinetic, brutalist, aggressive, uppercase, oversized, display, motion, street, bold, high-energy, zine","Music/culture apps, sports platfor - Network accessline 64
63,Flat Design Mobile (System Bold),"Sans + Sans",Inter,Inter,"flat, clean, system, bold, geometric, cross-platform, icon, poster, minimal, functional, responsive","Cross-platform apps, dashboards, system UI, onboarding, marketing pages, in - Network accessline 65
64,Material You MD3 (Roboto System),"Sans (System Default)",Roboto,Roboto,"material design 3, md3, android, google, tonal, friendly, rounded, accessible, adaptive","Android apps, cross-platform tools, productivity software, data-heavy B2B d - Network accessline 66
65,Neo Brutalism Mobile (Space Grotesk Heavy),"Geometric Sans (Bold-Only)",Space Grotesk,Space Grotesk,"neo brutalism, pop art, loud, bold, heavy, stickers, mechanical, high contrast, cream, gen-z","Creative tools, Gen-Z marketing, e-commer - Network accessline 67
66,Bold Typography Mobile (Inter-Tight Poster),"Sans + Serif (Display) + Mono","Inter","Playfair Display","bold typography, editorial, poster, near-black, vermillion, luxury, type-as-hero, manifesto, high-contrast","Creative brand flagships - Network accessline 68
67,Academia Mobile (Cormorant + Crimson + Cinzel),"Serif + Book Serif + Engraved (Triple Stack)","Cormorant Garamond","Crimson Pro","academia, library, mahogany, parchment, brass, scholarly, prestige, antique, victorian, leather","Knowledge - Network accessline 69
68,Cyberpunk Mobile (Orbitron + JetBrains Mono),"Tech Display + Mono","Orbitron","JetBrains Mono","cyberpunk, neon, glitch, hud, sci-fi, dark, matrix green, magenta, chamfered, tactical","Gaming companion apps, fintech/crypto, data visualiz - Network accessline 70
69,Web3 Bitcoin DeFi (Space Grotesk + Inter + Mono),"Geometric Sans + Sans + Mono (Triple)","Space Grotesk","Inter","web3, bitcoin, defi, digital gold, fintech, crypto, trustless, luminescent, precision, dark","DeFi protocols and wallets, N - Network accessline 71
70,Claymorphism Mobile (Nunito + DM Sans),"Display Rounded + Geometric Sans","Nunito","DM Sans","claymorphism, clay, rounded, playful, candy, bubbly, soft, 3d, children, education, tactile, spring, nunito, dm sans","Children education apps, - Network accessline 72
71,Enterprise SaaS Mobile (Plus Jakarta Sans),"Geometric Sans (Single Family)","Plus Jakarta Sans","Plus Jakarta Sans","enterprise, saas, b2b, professional, indigo, modern, approachable, legible, ios dynamic type, android scaling","B2B SaaS - Network accessline 73
72,Sketch Hand-Drawn Mobile (Kalam + Patrick Hand),"Handwritten + Handwritten (Dual)","Kalam","Patrick Hand","sketch, hand-drawn, handwriting, human, imperfect, organic, paper, kalam, patrick hand, education, journal, creative","Journaling - Network accessline 74
73,Neumorphism Mobile (Plus Jakarta Sans + System),"Geometric Sans (System Fallback)","Plus Jakarta Sans","Plus Jakarta Sans","neumorphism, soft ui, monochromatic, cool grey, minimal, physical, depth, ceramic, system font, utility","Smart h
_archive/snapshots/2026-10-26-defensive-design/forge-design/scripts/core.py
- Executable scriptline 1
#!/usr/bin/env python3
_archive/snapshots/2026-10-26-defensive-design/forge-design/scripts/design_system.py
- Executable scriptline 1
#!/usr/bin/env python3
_archive/snapshots/2026-10-26-defensive-design/forge-design/scripts/search.py
- Executable scriptline 1
#!/usr/bin/env python3
_archive/使用手册.md
- Network accessline 452
上下文工程和 Wave 并行执行机制参考了 [GSD (Get Shit Done)](https://github.com/gsd-build/get-shit-done) 框架的核心设计。
_archive/复盘/2026-03-22-文档驱动开发Skill生态构建.md
- Network accessline 68
| 类型 | 资源 | 关键价值 | |------|------|---------| | 🏭 产品案例 | [GSD Framework](https://github.com/gsd-build/get-shit-done) | 展示了完整的 skill 生态如何设计——phase 拆分、context engineering、wave 执行 | - Network accessline 69
|------|------|---------| | 🏭 产品案例 | [GSD Framework](https://github.com/gsd-build/get-shit-done) | 展示了完整的 skill 生态如何设计——phase 拆分、context engineering、wave 执行 | | 📐 权威规范 | cn-plan-eng / cn-plan-design / cn-qa SKILL.md | 定义了各领域审查的"完整版"应该包含什么 | - Network accessline 70
| 🏭 产品案例 | [GSD Framework](https://github.com/gsd-build/get-shit-done) | 展示了完整的 skill 生态如何设计——phase 拆分、context engineering、wave 执行 | - Network accessline 155
| 类型 | 资源 | 关键价值 | |------|------|---------| | 🏭 产品案例 | [GSD Framework README](https://github.com/gsd-build/get-shit-done/blob/main/README.zh-CN.md) | 完整展示了 context engineering 的实践——主 agent 30-40% 利用率,子 agent 全新窗口 | - Network accessline 156
|------|------|---------| | 🏭 产品案例 | [GSD Framework README](https://github.com/gsd-build/get-shit-done/blob/main/README.zh-CN.md) | 完整展示了 context engineering 的实践——主 agent 30-40% 利用率,子 agent 全新窗口 | | 📐 权威规范 | Claude Code Agent SDK `isolation - Network accessline 157
| 🏭 产品案例 | [GSD Framework README](https://github.com/gsd-build/get-shit-done/blob/main/README.zh-CN.md) | 完整展示了 context engineering 的实践——主 agent 30-40% 利用率,子 agent 全新窗口 | - Network accessline 244
| 类型 | 资源 | 关键价值 | |------|------|---------| | 📐 权威规范 | [Git Worktree 官方文档](https://git-scm.com/docs/git-worktree) | 定义了 worktree 的创建、管理和清理 | - Network accessline 245
|------|------|---------| | 📐 权威规范 | [Git Worktree 官方文档](https://git-scm.com/docs/git-worktree) | 定义了 worktree 的创建、管理和清理 | | 🏭 产品案例 | Claude Code `claude -w` / `Agent(isolation: "worktree")` | 展示了 AI 工具如何原生支持 worktree | - Network accessline 246
| 📐 权威规范 | [Git Worktree 官方文档](https://git-scm.com/docs/git-worktree) | 定义了 worktree 的创建、管理和清理 | - Network accessline 248
| 🏭 产品案例 | [GSD Framework](https://github.com/gsd-build/get-shit-done) | 展示了 branch-per-feature 在 AI 工作流中的实践 | - Access to secretsline 279
[Credential-related source omitted]
assets/forge-architecture.svg
- Network accessline 1
<svg width="100%" viewBox="0 0 680 680" xmlns="http://www.w3.org/2000/svg"><defs><marker id="a" viewBox="0 0 10 10" refX="8" refY="5" markerWidth="6" markerHeight="6" orient="auto-start-reverse"><path d="M2 1L8 5L2 9" fill="none" stroke="co
assets/forge-deliver-comparison.svg
- Network accessline 1
<svg width="100%" viewBox="0 0 680 780" xmlns="http://www.w3.org/2000/svg"><defs><marker id="a" viewBox="0 0 10 10" refX="8" refY="5" markerWidth="6" markerHeight="6" orient="auto-start-reverse"><path d="M2 1L8 5L2 9" fill="none" stroke="co
assets/forge-deliver-v2-flow.svg
- Network accessline 1
<svg width="100%" viewBox="0 0 680 700" xmlns="http://www.w3.org/2000/svg"><defs><marker id="a" viewBox="0 0 10 10" refX="8" refY="5" markerWidth="6" markerHeight="6" orient="auto-start-reverse"><path d="M2 1L8 5L2 9" fill="none" stroke="co
assets/forge-design-gating.svg
- Network accessline 1
<svg width="100%" viewBox="0 0 680 400" xmlns="http://www.w3.org/2000/svg"><defs><marker id="a" viewBox="0 0 10 10" refX="8" refY="5" markerWidth="6" markerHeight="6" orient="auto-start-reverse"><path d="M2 1L8 5L2 9" fill="none" stroke="co
assets/forge-eng-internals.svg
- Network accessline 1
<svg width="100%" viewBox="0 0 680 520" xmlns="http://www.w3.org/2000/svg"><defs><marker id="a" viewBox="0 0 10 10" refX="8" refY="5" markerWidth="6" markerHeight="6" orient="auto-start-reverse"><path d="M2 1L8 5L2 9" fill="none" stroke="co
assets/forge-workflow.svg
- Network accessline 1
<svg width="100%" viewBox="0 0 680 960" xmlns="http://www.w3.org/2000/svg"><defs><marker id="a" viewBox="0 0 10 10" refX="8" refY="5" markerWidth="6" markerHeight="6" orient="auto-start-reverse"><path d="M2 1L8 5L2 9" fill="none" stroke="co
docs/ENGINEERING-CHANGELOG.md
- Network accessline 82
- 后端单测:5 passed。 - 前端构建:Vite build passed。 - 本地服务:`http://127.0.0.1:8899/api/health` 返回 `ok: true`。 - Network accessline 83
- 前端构建:Vite build passed。 - 本地服务:`http://127.0.0.1:8899/api/health` 返回 `ok: true`。 - API 冒烟:tasks、reviews、selection 提交均已验证。 - Network accessline 84
- 本地服务:`http://127.0.0.1:8899/api/health` 返回 `ok: true`。
docs/QA.md
- Network accessline 129
curl -s http://127.0.0.1:8899/api/health - Network accessline 135
curl -s http://127.0.0.1:8899/api/tasks - Network accessline 136
curl -s http://127.0.0.1:8899/api/reviews - Network accessline 137
curl -s -X POST http://127.0.0.1:8899/api/tasks/release-smoke/selection ... - Network accessline 144
- `npx playwright screenshot --full-page http://127.0.0.1:8898 /tmp/fupan-workbench-release.png`:PASS
docs/archive/forge-qa-v3-research.md
- Network accessline 172
"dimension": "functional", "steps": [ { "action": "navigate", "url": "http://localhost:8080" }, - Network accessline 173
"steps": [ { "action": "navigate", "url": "http://localhost:8080" }, { "action": "wait", "selector": "[data-testid='feed-section']", "timeout": 5000 } - Network accessline 174
{ "action": "navigate", "url": "http://localhost:8080" }, - Network accessline 603
- Chrome DevTools MCP: https://github.com/ChromeDevTools/chrome-devtools-mcp - Network accessline 604
- Playwright MCP: https://github.com/microsoft/playwright-mcp - Network accessline 605
- skillsmp.com: https://skillsmp.com/zh - Network accessline 606
- Anthropics webapp-testing: https://github.com/anthropics/skills/blob/main/skills/webapp-testing/SKILL.md - Network accessline 607
- fugazi qa-test-planner: https://github.com/fugazi/test-automation-skills-agents - Network accessline 608
- currents-dev best practices: https://github.com/currents-dev/playwright-best-practices-skill
docs/archive/raw/claude-md-forge-section-v1-2026-07-04.md
- Network accessline 80
- 新增 API 路由 → SHALL curl 验证实际行为,不信任路由定义顺序 - Network accessline 81
- 修改 proxy/端口配置 → SHALL curl 验证代理路径的实际请求 - Network accessline 82
[Credential-related source omitted] - Access to secretsline 82
[Credential-related source omitted] - Network accessline 83
- 修改后端代码 → SHALL 重启服务并 curl health endpoint 确认
docs/archive/skill-audit-2026-07.md
- Access to secretsline 325
[Credential-related source omitted]
docs/archive/superpowers-comparison.md
- Network accessline 3
本文档深度对比 Doc-Driven Dev 与 [Superpowers](https://github.com/obra/superpowers) 两套 AI 开发流程框架。
docs/archive/v2026.04.24-fupan-workbench-RESEARCH.md
- Network accessline 44
参考: - FastAPI Static Files: https://fastapi.tiangolo.com/tutorial/static-files/ - Network accessline 45
- FastAPI Static Files: https://fastapi.tiangolo.com/tutorial/static-files/ - Network accessline 46
- Uvicorn Settings: https://www.uvicorn.org/settings/ - Network accessline 55
参考: - Vite Getting Started: https://vite.dev/guide/ - Network accessline 56
- Vite Getting Started: https://vite.dev/guide/ - Network accessline 57
- Vite Static Deploy: https://vite.dev/guide/static-deploy.html - Network accessline 58
- Vite Backend Integration: https://vite.dev/guide/backend-integration.html - Network accessline 66
参考: - React Sharing State: https://react.dev/learn/sharing-state-between-components - Network accessline 67
- React Sharing State: https://react.dev/learn/sharing-state-between-components - Network accessline 68
- React form: https://react.dev/reference/react-dom/components/form
docs/forge-user-guide.md
- Network accessline 368
| **严格 TDD** | 后端 API / 数据处理 / Bug 修复 | 写失败测试 → 最小实现 → 测试通过 → 重构(红绿重构) | | **轻量 TDD** | 前端组件(*.tsx / *.vue / *.jsx) | 关键交互测试,不要求先红后绿 | | **验证驱动** | 无测试框架时 | 每个任务定义可执行验证命令(curl / 脚本 / 截图) | - Network accessline 369
| **轻量 TDD** | 前端组件(*.tsx / *.vue / *.jsx) | 关键交互测试,不要求先红后绿 | | **验证驱动** | 无测试框架时 | 每个任务定义可执行验证命令(curl / 脚本 / 截图) | | **跳过** | 纯样式 / 配置 / 文档 | 无需测试 | - Network accessline 370
| **验证驱动** | 无测试框架时 | 每个任务定义可执行验证命令(curl / 脚本 / 截图) | - Network accessline 392
1. 运行验证命令(测试 / curl / 脚本)
evals/forge-design-lab/impl/run_impl_eval.py
- Executable scriptline 1
#!/usr/bin/env python3
evals/forge-design-lab/run_trigger_eval.py
- Executable scriptline 1
#!/usr/bin/env python3
evals/forge-design-lab/system/run_system_eval.py
- Executable scriptline 1
#!/usr/bin/env python3 - Network accessline 256
print("服务(真起一个本机服务发请求)") import http.client, time - Network accessline 257
import http.client, time - Access to secretsline 260
[Credential-related source omitted] - Network accessline 263
for _ in range(50): try: http.client.HTTPConnection("127.0.0.1", port, timeout=1).request("GET", "/api/lab/status"); break - Network accessline 264
try: http.client.HTTPConnection("127.0.0.1", port, timeout=1).request("GET", "/api/lab/status"); break except OSError: - Network accessline 265
http.client.HTTPConnection("127.0.0.1", port, timeout=1).request("GET", "/api/lab/status"); break - Network accessline 269
def req(method, path, body=None, headers=None): c = http.client.HTTPConnection("127.0.0.1", port, timeout=5) - Network accessline 270
c = http.client.HTTPConnection("127.0.0.1", port, timeout=5) - Access to secretsline 278
[Credential-related source omitted] - Access to secretsline 279
[Credential-related source omitted] - Network accessline 280
st, b = req("GET", "/api/lab/status", headers={"Host": f"evil.example:{port}"}) check("陌生 Host 被拒(DNS rebinding,坏样本)", st == 403, str(st)) c0 = http.client.HTTPConnection("127.0.0.1", port, timeout=5); c0.request("GE - Network accessline 281
check("陌生 Host 被拒(DNS rebinding,坏样本)", st == 403, str(st)) c0 = http.client.HTTPConnection("127.0.0.1", port, timeout=5); c0.request("GET", "/docs/assets/visuals/system/system.tokens.json", headers={"Host": f"127.0.0.1:{port}"}) - Network accessline 282
c0 = http.client.HTTPConnection("127.0.0.1", port, timeout=5); c0.request("GET", "/docs/assets/visuals/system/system.tokens.json", headers={"Host": f"127.0.0.1:{port}"}) - Network accessline 286
rev = json.loads(req("GET", "/api/lab/system-rev")[1])["rev"] body = json.dumps({"kind": "system", "rev": rev, "feedback": after["feedback"]}) st, b = req("POST", "/api/lab/save", body, {"Content-Type": "text/plain", - Network accessline 287
body = json.dumps({"kind": "system", "rev": rev, "feedback": after["feedback"]}) st, b = req("POST", "/api/lab/save", body, {"Content-Type": "text/plain", "Origin": "https://evil.example"}) check("跨站 POST 被拒(坏样本)", s - Network accessline 288
st, b = req("POST", "/api/lab/save", body, {"Content-Type": "text/plain", "Origin": "https://evil.example"}) - Network accessline 294
json.dump(disk, open(os.path.join(root, "docs/assets/visuals/system/system.tokens.json"), "w"), ensure_ascii=False) rev = json.loads(req("GET", "/api/lab/system-rev")[1])["rev"] st, b = req("POST", "/api/lab/save", j - Network accessline 295
rev = json.loads(req("GET", "/api/lab/system-rev")[1])["rev"] st, b = req("POST", "/api/lab/save", json.dumps({"kind": "system", "rev": rev, "feedback": disk["feedback"] + [{"t": "页面反馈", "at": "2026-03-01T00:00"}]}), {"Content-T - Network accessline 296
st, b = req("POST", "/api/lab/save", json.dumps({"kind": "system", "rev": rev, "feedback": disk["feedback"] + [{"t": "页面反馈", "at": "2026-03-01T00:00"}]}), {"Content-Type": "application/json", "Origin": f"http://127.0.0.1:{port}"})
evals/forge-feature-doc/run_trigger_eval.py
- Executable scriptline 1
#!/usr/bin/env python3
evals/forge-feature-doc/score_doc.py
- Executable scriptline 1
#!/usr/bin/env python3
examples/pomodoro/README.md
- Network accessline 3
用 Forge 的 Skill 把一个番茄钟网页从一句想法做到上线。项目本身在独立仓库 [antonailog/forge-demo-pomodoro](https://github.com/antonailog/forge-demo-pomodoro)(本地 `~/claudecode_workspace/项目/forge-demo-pomodoro`),这里记录每个 Skill 在这次示范里的输入、过程和产物,`shots/` 放配图用的截图。
examples/pomodoro/forge-bugfix.md
- Network accessline 44
13. **文档同步**:需求设计文档盯着页面代码文件,代码改了文档没改,项目的文档检查会拦下。用 forge-feature-doc 更新:待拍板里删掉这一项、「交互与细节」写明悬停仍柔和变色而切阶段直接换、关键改动加一行,检查通过。另把工程文档的技术债、工程变更日志、验收手册里「未修复」的说法同步成已修复,并在验收手册的回归清单里加上新的回归脚本。 14. **合并(P7)**:合并预演在一个临时的、指向远程 main 的独立检出里做(Skill 写的是在主检出上预演再撤 - Network accessline 45
14. **合并(P7)**:合并预演在一个临时的、指向远程 main 的独立检出里做(Skill 写的是在主检出上预演再撤销,但主检出是主线会话的工作区),无冲突,用完删掉。 - 演示时由 AI 按默认确认:合并(A)。按示范要求走合并请求([#3](https://github.com/antonailog/forge-demo-pomodoro/pull/3))而不是本地直接推 main:推送前查了一遍公开仓库不该有的东西,把报告里三处本机绝对路径改成相对仓库根 - Network accessline 46
- 演示时由 AI 按默认确认:合并(A)。按示范要求走合并请求([#3](https://github.com/antonailog/forge-demo-pomodoro/pull/3))而不是本地直接推 main:推送前查了一遍公开仓库不该有的东西,把报告里三处本机绝对路径改成相对仓库根目录;拉取远程后再预演一次,推送修复分支、开合并请求(可合并、无冲突,仓库没有远程自动检查),用保留分支历史的方式合并,再把本地 main 快进到远程 main,确认 main 的内容和 - Network accessline 56
(相对项目仓库根目录;都已随合并请求 [#3](https://github.com/antonailog/forge-demo-pomodoro/pull/3) 合进 main,分支 `bugfix/bf-1023-1`)
examples/pomodoro/forge-design-lab.md
- Network accessline 45
最适合截图: - **工作台的「手机横屏」那一屏**(首选):在项目根目录起服务 `python3 ~/.claude/skills/forge-design-lab/scripts/serve.py .`,打开 `http://127.0.0.1:4577/docs/assets/visuals/pomodoro/2026-10-23-skeleton-v1.0.html`;层级选「番茄钟页面」、状态「专注进行中」、视口「手机横屏」;右侧面板「按层」展开「1 结构」,找到「 - Network accessline 46
- **工作台的「手机横屏」那一屏**(首选):在项目根目录起服务 `python3 ~/.claude/skills/forge-design-lab/scripts/serve.py .`,打开 `http://127.0.0.1:4577/docs/assets/visuals/pomodoro/2026-10-23-skeleton-v1.0.html`;层级选「番茄钟页面」、状态「专注进行中」、视口「手机横屏」;右侧面板「按层」展开「1 结构」,找到「矮屏阈值」。把
examples/pomodoro/forge-doc-release.md
- Network accessline 59
- `docs/PRD.md`、`docs/DESIGN.md`、`docs/ENGINEERING.md`、`docs/modules/番茄钟.md`:状态同步。 - `docs/README.md`、`docs/INDEX.md`:版本记录入口。 - 合并请求:https://github.com/antonailog/forge-demo-pomodoro/pull/2 (已合并,合并提交 `a456b7f`)。 - Network accessline 61
- 合并请求:https://github.com/antonailog/forge-demo-pomodoro/pull/2 (已合并,合并提交 `a456b7f`)。 - Network accessline 65
- **GitHub 仓库首页** https://github.com/antonailog/forge-demo-pomodoro :README 渲染出来的样子——顶上是四种真实状态的总览图,下面「番茄钟能做什么」「怎么打开」两节。配一句「合并之后,文档也跟着同步到了用户能看懂的样子」。
examples/pomodoro/forge-ship.md
- Network accessline 37
| 基础分支:main | | 提交:67653df(审查修正)、ca8453e(合入 main) | | PR:https://github.com/antonailog/forge-demo-pomodoro/pull/1 | - Network accessline 38
| 提交:67653df(审查修正)、ca8453e(合入 main) | | PR:https://github.com/antonailog/forge-demo-pomodoro/pull/1 | | PR 状态:已合并 | - Network accessline 39
| PR:https://github.com/antonailog/forge-demo-pomodoro/pull/1 | - Network accessline 54
- 合并请求:https://github.com/antonailog/forge-demo-pomodoro/pull/1 (已合并,合并提交 `2282272`) - Network accessline 60
- **合并请求页面** https://github.com/antonailog/forge-demo-pomodoro/pull/1 的描述一屏:「变更摘要 / 测试情况 / 注意事项 / 是否需要部署 / 迁移与数据」五节齐全,注意事项里老实写了「后台到点会晚响、需要人工验证」和「无远程自动检查」。
examples/pomodoro/shots/codex-delegate/timer-core-head.js
- Executable scriptline 1
Executable file
examples/pomodoro/shots/forge-dev/status.md
- Network accessline 10
| design | [✅ 已完成] | forge-design | 2026-10-23T00:18:45-07:00 | 2026-10-23T00:36:24-07:00 | DESIGN.md v1.0(L1,评分 A−)+ 工作台页面包 docs/assets/visuals/pomodoro/,两轮审查定稿 | | design-impl | [✅ 已完成] | forge-design-impl | 2026-10-23T00:47:15-07:00 | 20 - Network accessline 11
| design-impl | [✅ 已完成] | forge-design-impl | 2026-10-23T00:47:15-07:00 | 2026-10-23T01:03:28-07:00 | 分支 eng/pomodoro-timer-2026-10-23(worktree .worktrees/pomodoro-timer)提交 2d218c9、ad9de43:index.html + style.css;Codex 两份任务各一轮通过;骨架比对 5/5、验收脚 - Network accessline 12
| eng | [✅ 已完成] | forge-eng | 2026-10-23T01:10:46-07:00 | 2026-10-23T01:58:56-07:00 | 完整模式;分支 eng/pomodoro-timer-2026-10-23 提交 bfeba66、1bb6cc7、ed1968a、7843ccb、794ff8e、9aee673(保留分支,未推送);Codex 三份任务各一轮通过;node --test 22/22;浏览器自验 17/17;交接:APP_UR
examples/pomodoro/shots/forge-doc-release/发布前README.md
- Network accessline 5
从一句想法「我想做一个番茄钟网页」开始,用 [Forge](https://github.com/antonailog/forge-skills) 的 Skill 一步步做到上线:讨论需求、写 PRD、做设计、写代码、验收、审查、发布、修 bug、复盘。每一步的产物都留在这个仓库里,可以对照着看 Forge 每个 Skill 实际做了什么。
examples/pomodoro/shots/forge-qa/QA.md
- Network accessline 10
**版本:** v1.0 **日期:** 2026-10-23 **被测:** 分支 `eng/pomodoro-timer-2026-10-23`,提交 `9aee673`,`http://127.0.0.1:4577/index.html`(worktree 根目录静态服务) - Network accessline 11
**日期:** 2026-10-23 **被测:** 分支 `eng/pomodoro-timer-2026-10-23`,提交 `9aee673`,`http://127.0.0.1:4577/index.html`(worktree 根目录静态服务) **状态:** 已验收(User Gate 接受;附 1 条低级别设计偏离待拍板、5 项需求方手动验证) - Network accessline 12
**被测:** 分支 `eng/pomodoro-timer-2026-10-23`,提交 `9aee673`,`http://127.0.0.1:4577/index.html`(worktree 根目录静态服务) - Network accessline 230
| 浏览器 | Playwright 1.59.1 自带无头 Chromium 147(chrome-headless-shell) | | Node | v22.22.1;不装任何项目依赖,脚本通过 `npm root -g` 使用全局 Playwright | | 页面 | worktree 根目录 `python3 -m http.server 4577 --bind 127.0.0.1`,`APP_URL=http://127.0.0.1:4577/index.htm - Network accessline 231
| Node | v22.22.1;不装任何项目依赖,脚本通过 `npm root -g` 使用全局 Playwright | | 页面 | worktree 根目录 `python3 -m http.server 4577 --bind 127.0.0.1`,`APP_URL=http://127.0.0.1:4577/index.html`;另测 `file://` 直接打开 | | 可访问性 | 本机 axe-core 4.11.1,以本地文件注入,不发外部请求 | - Network accessline 232
| 页面 | worktree 根目录 `python3 -m http.server 4577 --bind 127.0.0.1`,`APP_URL=http://127.0.0.1:4577/index.html`;另测 `file://` 直接打开 | - Network accessline 249
# 骨架与真页面比对(forge-design-lab) node ~/.claude/skills/forge-design-lab/scripts/compare_impl.mjs docs/assets/visuals/pomodoro/2026-10-23-skeleton-v1.0.html \ --app http://127.0.0.1:4577/index.html --json .gstack/qa-reports/impl-compare/impl-c - Network accessline 250
node ~/.claude/skills/forge-design-lab/scripts/compare_impl.mjs docs/assets/visuals/pomodoro/2026-10-23-skeleton-v1.0.html --app http://127.0.0.1:4577/index.html --json .gstack/qa-reports/impl-compare/impl-compare.json --shots .gstack/qa - Network accessline 251
--app http://127.0.0.1:4577/index.html --json .gstack/qa-reports/impl-compare/impl-compare.json --shots .gstack/qa-reports/impl-compare
install.sh
- Executable scriptline 1
#!/bin/bash - Dangerous shell operationline 130
run rm "$dst" - Dangerous shell operationline 135
run rm -rf "$dst" - Dangerous shell operationline 157
run rm "$dst" - Dangerous shell operationline 161
run rm -rf "$dst" - Network accessline 227
done echo "NOTE: forge-design-lab needs design-studio (its workbench server and token tools). Not found." echo " Install: git clone https://github.com/antonailog/design-studio.git ~/.design-studio" - Network accessline 228
echo "NOTE: forge-design-lab needs design-studio (its workbench server and token tools). Not found." echo " Install: git clone https://github.com/antonailog/design-studio.git ~/.design-studio" echo " Or point DESIGN_STUDIO_HOM - Network accessline 229
echo " Install: git clone https://github.com/antonailog/design-studio.git ~/.design-studio"
skills/_shared/generate_image2.py
- Executable scriptline 1
#!/usr/bin/env python3 - Access to secretsline 5
[Credential-related source omitted] - Access to secretsline 95
[Credential-related source omitted] - Access to secretsline 96
[Credential-related source omitted] - Access to secretsline 97
[Credential-related source omitted] - Access to secretsline 99
[Credential-related source omitted] - Network accessline 102
[Credential-related source omitted] - Access to secretsline 102
[Credential-related source omitted] - Network accessline 103
request = urllib.request.Request( - Access to secretsline 107
[Credential-related source omitted] - Network accessline 113
try: with urllib.request.urlopen(request, timeout=args.timeout) as response: - Network accessline 114
with urllib.request.urlopen(request, timeout=args.timeout) as response: - Possible obfuscationline 145
path.write_bytes(base64.b64decode(b64_json))
skills/_shared/visual-decision-layer.md
- Access to secretsline 78
[Credential-related source omitted]
skills/forge-brainstorm/references/thinking-doc-template.md
skills/forge-bugfix/SKILL.md
- Broad permissionsline 1
Bash
skills/forge-bugfix/references/p0-p1-session-setup.md
- Network accessline 52
for port in 3456 3000 4000 5173 8080 8000; do if lsof -i :"$port" -sTCP:LISTEN &>/dev/null 2>&1; then APP_URL="http://localhost:$port" - Network accessline 53
if lsof -i :"$port" -sTCP:LISTEN &>/dev/null 2>&1; then APP_URL="http://localhost:$port" _PID=$(lsof -ti :"$port" -sTCP:LISTEN 2>/dev/null | head -1) - Network accessline 54
APP_URL="http://localhost:$port"
skills/forge-bugfix/references/p3-p5-fix-loop.md
skills/forge-bugfix/references/p6-p7-acceptance.md
- Network accessline 37
| 配置/开关/数据检查 | 前端/权限/数据可见性 bug 的报告有"配置 / 开关 / 数据就绪检查" | 回 P4 重查根因 | | APP_URL 来源(如 bug 类型需要) | `APP_URL` 来自 `npm run dev:status` / `scripts/dev-stack.sh status` 输出 | 回 P3.2 重启并重新读取 | | 应用可访问(如 bug 类型需要) | `curl -sf "$APP_URL" > /dev/null` | - Network accessline 38
| APP_URL 来源(如 bug 类型需要) | `APP_URL` 来自 `npm run dev:status` / `scripts/dev-stack.sh status` 输出 | 回 P3.2 重启并重新读取 | | 应用可访问(如 bug 类型需要) | `curl -sf "$APP_URL" > /dev/null` | 用统一 dev 入口重启 | | 前后端进程身份核对 | `dev:status` 或 `lsof -p $PID \| grep c - Network accessline 39
| 应用可访问(如 bug 类型需要) | `curl -sf "$APP_URL" > /dev/null` | 用统一 dev 入口重启 | - Network accessline 110
校验器失败即 `QA_INCOMPLETE`。**不得**因为单元测试、curl smoke 或 forge-qa 文本返回看起来通过,就绕过这个门禁。 - Network accessline 217
验收地址(QA 也使用同一组地址): Frontend: http://localhost:xxxx - Network accessline 218
Frontend: http://localhost:xxxx - Network accessline 219
Backend: http://localhost:yyyy
skills/forge-bugfix/scripts/get-session-id.sh
- Executable scriptline 1
#!/bin/bash
skills/forge-bugfix/scripts/validate-bugfix-report.py
skills/forge-bugfix/templates/review-checklist.md
- Network accessline 114
| 服务 | 地址 | 来源 | 进程身份校验 | 结论 | |---|---|---|---|---| | Frontend | {{http://localhost:xxxx}} | {{dev:status / dev-stack status / 其他}} | {{PID=, cwd=, branch=}} | {{PASS / FAIL / N/A}} | - Network accessline 115
|---|---|---|---|---| | Frontend | {{http://localhost:xxxx}} | {{dev:status / dev-stack status / 其他}} | {{PID=, cwd=, branch=}} | {{PASS / FAIL / N/A}} | | Backend / API | {{http://localhost:xxxx 或 —}} | {{dev:status / dev-stack status / 其他 - Network accessline 116
| Frontend | {{http://localhost:xxxx}} | {{dev:status / dev-stack status / 其他}} | {{PID=, cwd=, branch=}} | {{PASS / FAIL / N/A}} | | Backend / API | {{http://localhost:xxxx 或 —}} | {{dev:status / dev-stack status / 其他}} | {{PID=, cwd=, bra - Network accessline 117
| Backend / API | {{http://localhost:xxxx 或 —}} | {{dev:status / dev-stack status / 其他}} | {{PID=, cwd=, branch=}} | {{PASS / FAIL / N/A}} | - Network accessline 118
| API Health | {{/health 或 —}} | {{curl / 其他}} | {{状态码 / 响应摘要}} | {{PASS / FAIL / N/A}} |
skills/forge-design-lab/SKILL.md
skills/forge-design-lab/scripts/_design_studio.py
skills/forge-design-lab/scripts/adapt_tokens.py
- Executable scriptline 1
#!/usr/bin/env python3
skills/forge-design-lab/scripts/build_template.js
- Executable scriptline 1
#!/usr/bin/env node - Network accessline 14
if (usable(d)) return d; } die('✗ 找不到带骨架模式的 design-studio。安装:git clone https://github.com/antonailog/design-studio.git ~/.design-studio(或用 DESIGN_STUDIO_HOME 指到它的目录;已装的旧版本 git pull)'); - Network accessline 15
} die('✗ 找不到带骨架模式的 design-studio。安装:git clone https://github.com/antonailog/design-studio.git ~/.design-studio(或用 DESIGN_STUDIO_HOME 指到它的目录;已装的旧版本 git pull)'); } - Network accessline 16
die('✗ 找不到带骨架模式的 design-studio。安装:git clone https://github.com/antonailog/design-studio.git ~/.design-studio(或用 DESIGN_STUDIO_HOME 指到它的目录;已装的旧版本 git pull)');
skills/forge-design-lab/scripts/build_tokens.py
- Executable scriptline 1
#!/usr/bin/env python3
skills/forge-design-lab/scripts/check_system.py
- Executable scriptline 1
#!/usr/bin/env python3
skills/forge-design-lab/scripts/compare_impl.mjs
- Executable scriptline 1
#!/usr/bin/env node - Network accessline 5
// node compare_impl.mjs <骨架 html 路径或 URL> [--app <产品页 URL>] [--json <报告输出>] [--shots <目录>] // 比对清单写在 <page>.tokens.json 的 implCheck 字段(详见 references/spec-schema.md): // {"app": "http://127.0.0.1:3567/#ai-search", "viewport": {"w":1440, - Network accessline 6
// 比对清单写在 <page>.tokens.json 的 implCheck 字段(详见 references/spec-schema.md): // {"app": "http://127.0.0.1:3567/#ai-search", "viewport": {"w":1440,"h":900}, "lab": {"level":"page","state":"done"}, // "tolerance": 2, "waitFor": "[data-test - Network accessline 7
// {"app": "http://127.0.0.1:3567/#ai-search", "viewport": {"w":1440,"h":900}, "lab": {"level":"page","state":"done"},
skills/forge-design-lab/scripts/extract_system.py
- Executable scriptline 1
#!/usr/bin/env python3
skills/forge-design-lab/scripts/merge_saved.py
- Executable scriptline 1
#!/usr/bin/env python3
skills/forge-design-lab/scripts/render_design_table.py
- Executable scriptline 1
#!/usr/bin/env python3
skills/forge-design-lab/scripts/scaffold_pack.py
- Executable scriptline 1
#!/usr/bin/env python3 - Network accessline 117
if fonts_google: fam = "&".join("family=" + f.replace(" ", "+") + ":wght@400;500;600;700" for f in fonts_google[:4]) font_links = ('<link rel="preconnect" href="https://fonts.googleapis.com">\n<link rel="preconnect" href="ht - Network accessline 118
fam = "&".join("family=" + f.replace(" ", "+") + ":wght@400;500;600;700" for f in fonts_google[:4]) font_links = ('<link rel="preconnect" href="https://fonts.googleapis.com">\n<link rel="preconnect" href="https://fonts.gstatic.com" - Network accessline 119
font_links = ('<link rel="preconnect" href="https://fonts.googleapis.com">\n<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>\n' - Network accessline 120
f'<link href="https://fonts.googleapis.com/css2?{fam}&display=swap" rel="stylesheet">')
skills/forge-design-lab/scripts/serve.py
- Executable scriptline 1
#!/usr/bin/env python3
skills/forge-design-lab/scripts/verify_pack.mjs
- Executable scriptline 1
#!/usr/bin/env node
skills/forge-design/data/products.csv
- Access to secretsline 112
[Credential-related source omitted]
skills/forge-design/data/typography.csv
- Network accessline 1
No,Font Pairing Name,Category,Heading Font,Body Font,Mood/Style Keywords,Best For,Google Fonts URL,CSS Import,Tailwind Config,Notes 1,Classic Elegant,"Serif + Sans",Playfair Display,Inter,"elegant, luxury, sophisticated, timeless, premium, - Network accessline 2
1,Classic Elegant,"Serif + Sans",Playfair Display,Inter,"elegant, luxury, sophisticated, timeless, premium, editorial","Luxury brands, fashion, spa, beauty, editorial, magazines, high-end e-commerce","https://fonts.google.com/share?selectio - Network accessline 3
2,Modern Professional,"Sans + Sans",Poppins,Open Sans,"modern, professional, clean, corporate, friendly, approachable","SaaS, corporate sites, business apps, startups, professional services","https://fonts.google.com/share?selection.family= - Network accessline 4
3,Tech Startup,"Sans + Sans",Space Grotesk,DM Sans,"tech, startup, modern, innovative, bold, futuristic","Tech companies, startups, SaaS, developer tools, AI products","https://fonts.google.com/share?selection.family=DM+Sans:wght@400;500;70 - Network accessline 5
4,Editorial Classic,"Serif + Serif",Cormorant Garamond,Libre Baskerville,"editorial, classic, literary, traditional, refined, bookish","Publishing, blogs, news sites, literary magazines, book covers","https://fonts.google.com/share?selectio - Network accessline 6
5,Minimal Swiss,"Sans + Sans",Inter,Inter,"minimal, clean, swiss, functional, neutral, professional","Dashboards, admin panels, documentation, enterprise apps, design systems","https://fonts.google.com/share?selection.family=Inter:wght@300; - Network accessline 7
6,Playful Creative,"Display + Sans",Fredoka,Nunito,"playful, friendly, fun, creative, warm, approachable","Children's apps, educational, gaming, creative tools, entertainment","https://fonts.google.com/share?selection.family=Fredoka:wght@40 - Network accessline 8
7,Bold Statement,"Display + Sans",Bebas Neue,Source Sans 3,"bold, impactful, strong, dramatic, modern, headlines","Marketing sites, portfolios, agencies, event pages, sports","https://fonts.google.com/share?selection.family=Bebas+Neue|Sourc - Network accessline 9
8,Wellness Calm,"Serif + Sans",Lora,Raleway,"calm, wellness, health, relaxing, natural, organic","Health apps, wellness, spa, meditation, yoga, organic brands","https://fonts.google.com/share?selection.family=Lora:wght@400;500;600;700|Ralew - Network accessline 10
9,Developer Mono,"Mono + Sans",JetBrains Mono,IBM Plex Sans,"code, developer, technical, precise, functional, hacker","Developer tools, documentation, code editors, tech blogs, CLI apps","https://fonts.google.com/share?selection.family=IBM+ - Network accessline 11
10,Retro Vintage,"Display + Serif",Abril Fatface,Merriweather,"retro, vintage, nostalgic, dramatic, decorative, bold","Vintage brands, breweries, restaurants, creative portfolios, posters","https://fonts.google.com/share?selection.family=Ab - Network accessline 12
11,Geometric Modern,"Sans + Sans",Outfit,Work Sans,"geometric, modern, clean, balanced, contemporary, versatile","General purpose, portfolios, agencies, modern brands, landing pages","https://fonts.google.com/share?selection.family=Outfit:w - Network accessline 13
12,Luxury Serif,"Serif + Sans",Cormorant,Montserrat,"luxury, high-end, fashion, elegant, refined, premium","Fashion brands, luxury e-commerce, jewelry, high-end services","https://fonts.google.com/share?selection.family=Cormorant:wght@400;5 - Network accessline 14
13,Friendly SaaS,"Sans + Sans",Plus Jakarta Sans,Plus Jakarta Sans,"friendly, modern, saas, clean, approachable, professional","SaaS products, web apps, dashboards, B2B, productivity tools","https://fonts.google.com/share?selection.family=P - Network accessline 15
14,News Editorial,"Serif + Sans",Newsreader,Roboto,"news, editorial, journalism, trustworthy, readable, informative","News sites, blogs, magazines, journalism, content-heavy sites","https://fonts.google.com/share?selection.family=Newsreader - Network accessline 16
15,Handwritten Charm,"Script + Sans",Caveat,Quicksand,"handwritten, personal, friendly, casual, warm, charming","Personal blogs, invitations, creative portfolios, lifestyle brands","https://fonts.google.com/share?selection.family=Caveat:wgh - Network accessline 17
16,Corporate Trust,"Sans + Sans",Lexend,Source Sans 3,"corporate, trustworthy, accessible, readable, professional, clean","Enterprise, government, healthcare, finance, accessibility-focused","https://fonts.google.com/share?selection.family= - Network accessline 18
17,Brutalist Raw,"Mono + Mono",Space Mono,Space Mono,"brutalist, raw, technical, monospace, minimal, stark","Brutalist designs, developer portfolios, experimental, tech art","https://fonts.google.com/share?selection.family=Space+Mono:wght@4 - Network accessline 19
18,Fashion Forward,"Sans + Sans",Syne,Manrope,"fashion, avant-garde, creative, bold, artistic, edgy","Fashion brands, creative agencies, art galleries, design studios","https://fonts.google.com/share?selection.family=Manrope:wght@300;400;50 - Network accessline 20
19,Soft Rounded,"Sans + Sans",Varela Round,Nunito Sans,"soft, rounded, friendly, approachable, warm, gentle","Children's products, pet apps, friendly brands, wellness, soft UI","https://fonts.google.com/share?selection.family=Nunito+Sans:wg - Network accessline 21
20,Premium Sans,"Sans + Sans",Satoshi,General Sans,"premium, modern, clean, sophisticated, versatile, balanced","Premium brands, modern agencies, SaaS, portfolios, startups","https://fonts.google.com/share?selection.family=DM+Sans:wght@400; - Network accessline 22
21,Vietnamese Friendly,"Sans + Sans",Be Vietnam Pro,Noto Sans,"vietnamese, international, readable, clean, multilingual, accessible","Vietnamese sites, multilingual apps, international products","https://fonts.google.com/share?selection.fam - Network accessline 23
22,Japanese Elegant,"Serif + Sans",Noto Serif JP,Noto Sans JP,"japanese, elegant, traditional, modern, multilingual, readable","Japanese sites, Japanese restaurants, cultural sites, anime/manga","https://fonts.google.com/share?selection.fam - Network accessline 24
23,Korean Modern,"Sans + Sans",Noto Sans KR,Noto Sans KR,"korean, modern, clean, professional, multilingual, readable","Korean sites, K-beauty, K-pop, Korean businesses, multilingual","https://fonts.google.com/share?selection.family=Noto+Sa - Network accessline 25
24,Chinese Traditional,"Serif + Sans",Noto Serif TC,Noto Sans TC,"chinese, traditional, elegant, cultural, multilingual, readable","Traditional Chinese sites, cultural content, Taiwan/Hong Kong markets","https://fonts.google.com/share?selec - Network accessline 26
25,Chinese Simplified,"Sans + Sans",Noto Sans SC,Noto Sans SC,"chinese, simplified, modern, professional, multilingual, readable","Simplified Chinese sites, mainland China market, business apps","https://fonts.google.com/share?selection.fam - Network accessline 27
26,Arabic Elegant,"Serif + Sans",Noto Naskh Arabic,Noto Sans Arabic,"arabic, elegant, traditional, cultural, RTL, readable","Arabic sites, Middle East market, Islamic content, bilingual sites","https://fonts.google.com/share?selection.famil - Network accessline 28
27,Thai Modern,"Sans + Sans",Noto Sans Thai,Noto Sans Thai,"thai, modern, readable, clean, multilingual, accessible","Thai sites, Southeast Asia, tourism, Thai restaurants","https://fonts.google.com/share?selection.family=Noto+Sans+Thai:wgh - Network accessline 29
28,Hebrew Modern,"Sans + Sans",Noto Sans Hebrew,Noto Sans Hebrew,"hebrew, modern, RTL, clean, professional, readable","Hebrew sites, Israeli market, Jewish content, bilingual sites","https://fonts.google.com/share?selection.family=Noto+Sans - Network accessline 30
29,Legal Professional,"Serif + Sans",EB Garamond,Lato,"legal, professional, traditional, trustworthy, formal, authoritative","Law firms, legal services, contracts, formal documents, government","https://fonts.google.com/share?selection.fami - Network accessline 31
30,Medical Clean,"Sans + Sans",Figtree,Noto Sans,"medical, clean, accessible, professional, healthcare, trustworthy","Healthcare, medical clinics, pharma, health apps, accessibility","https://fonts.google.com/share?selection.family=Figtree: - Network accessline 32
31,Financial Trust,"Sans + Sans",IBM Plex Sans,IBM Plex Sans,"financial, trustworthy, professional, corporate, banking, serious","Banks, finance, insurance, investment, fintech, enterprise","https://fonts.google.com/share?selection.family=I - Network accessline 33
32,Real Estate Luxury,"Serif + Sans",Cinzel,Josefin Sans,"real estate, luxury, elegant, sophisticated, property, premium","Real estate, luxury properties, architecture, interior design","https://fonts.google.com/share?selection.family=Cinze - Network accessline 34
33,Restaurant Menu,"Serif + Sans",Playfair Display SC,Karla,"restaurant, menu, culinary, elegant, foodie, hospitality","Restaurants, cafes, food blogs, culinary, hospitality","https://fonts.google.com/share?selection.family=Karla:wght@300;4 - Network accessline 35
34,Art Deco,"Display + Sans",Poiret One,Didact Gothic,"art deco, vintage, 1920s, elegant, decorative, gatsby","Vintage events, art deco themes, luxury hotels, classic cocktails","https://fonts.google.com/share?selection.family=Didact+Gothic - Network accessline 36
35,Magazine Style,"Serif + Sans",Libre Bodoni,Public Sans,"magazine, editorial, publishing, refined, journalism, print","Magazines, online publications, editorial content, journalism","https://fonts.google.com/share?selection.family=Libre+B - Network accessline 37
36,Crypto/Web3,"Sans + Sans",Orbitron,Exo 2,"crypto, web3, futuristic, tech, blockchain, digital","Crypto platforms, NFT, blockchain, web3, futuristic tech","https://fonts.google.com/share?selection.family=Exo+2:wght@300;400;500;600;700|Orb - Network accessline 38
37,Gaming Bold,"Display + Sans",Russo One,Chakra Petch,"gaming, bold, action, esports, competitive, energetic","Gaming, esports, action games, competitive sports, entertainment","https://fonts.google.com/share?selection.family=Chakra+Petch: - Network accessline 39
38,Indie/Craft,"Display + Sans",Amatic SC,Cabin,"indie, craft, handmade, artisan, organic, creative","Craft brands, indie products, artisan, handmade, organic products","https://fonts.google.com/share?selection.family=Amatic+SC:wght@400;700 - Network accessline 40
39,Startup Bold,"Sans + Sans",Clash Display,Satoshi,"startup, bold, modern, innovative, confident, dynamic","Startups, pitch decks, product launches, bold brands","https://fonts.google.com/share?selection.family=Outfit:wght@400;500;600;700| - Network accessline 41
40,E-commerce Clean,"Sans + Sans",Rubik,Nunito Sans,"ecommerce, clean, shopping, product, retail, conversion","E-commerce, online stores, product pages, retail, shopping","https://fonts.google.com/share?selection.family=Nunito+Sans:wght@300 - Network accessline 42
41,Academic/Research,"Serif + Sans",Crimson Pro,Atkinson Hyperlegible,"academic, research, scholarly, accessible, readable, educational","Universities, research papers, academic journals, educational","https://fonts.google.com/share?selecti - Network accessline 43
42,Dashboard Data,"Mono + Sans",Fira Code,Fira Sans,"dashboard, data, analytics, code, technical, precise","Dashboards, analytics, data visualization, admin panels","https://fonts.google.com/share?selection.family=Fira+Code:wght@400;500;600 - Network accessline 44
43,Music/Entertainment,"Display + Sans",Righteous,Poppins,"music, entertainment, fun, energetic, bold, performance","Music platforms, entertainment, events, festivals, performers","https://fonts.google.com/share?selection.family=Poppins:wgh - Network accessline 45
44,Minimalist Portfolio,"Sans + Sans",Archivo,Space Grotesk,"minimal, portfolio, designer, creative, clean, artistic","Design portfolios, creative professionals, minimalist brands","https://fonts.google.com/share?selection.family=Archivo:wg - Network accessline 46
45,Kids/Education,"Display + Sans",Baloo 2,Comic Neue,"kids, education, playful, friendly, colorful, learning","Children's apps, educational games, kid-friendly content","https://fonts.google.com/share?selection.family=Baloo+2:wght@400;500; - Network accessline 47
46,Wedding/Romance,"Script + Serif",Great Vibes,Cormorant Infant,"wedding, romance, elegant, script, invitation, feminine","Wedding sites, invitations, romantic brands, bridal","https://fonts.google.com/share?selection.family=Cormorant+Infa - Network accessline 48
47,Science/Tech,"Sans + Sans",Exo,Roboto Mono,"science, technology, research, data, futuristic, precise","Science, research, tech documentation, data-heavy sites","https://fonts.google.com/share?selection.family=Exo:wght@300;400;500;600;700 - Network accessline 49
48,Accessibility First,"Sans + Sans",Atkinson Hyperlegible,Atkinson Hyperlegible,"accessible, readable, inclusive, WCAG, dyslexia-friendly, clear","Accessibility-critical sites, government, healthcare, inclusive design","https://fonts.googl - Network accessline 50
49,Sports/Fitness,"Sans + Sans",Barlow Condensed,Barlow,"sports, fitness, athletic, energetic, condensed, action","Sports, fitness, gyms, athletic brands, competition","https://fonts.google.com/share?selection.family=Barlow+Condensed:wght@4 - Network accessline 51
50,Luxury Minimalist,"Serif + Sans",Bodoni Moda,Jost,"luxury, minimalist, high-end, sophisticated, refined, premium","Luxury minimalist brands, high-end fashion, premium products","https://fonts.google.com/share?selection.family=Bodoni+Moda - Network accessline 52
51,Tech/HUD Mono,"Mono + Mono",Share Tech Mono,Fira Code,"tech, futuristic, hud, sci-fi, data, monospaced, precise","Sci-fi interfaces, developer tools, cybersecurity, dashboards","https://fonts.google.com/share?selection.family=Fira+Code:w - Network accessline 53
52,Pixel Retro,"Display + Sans",Press Start 2P,VT323,"pixel, retro, gaming, 8-bit, nostalgic, arcade","Pixel art games, retro websites, creative portfolios","https://fonts.google.com/share?selection.family=Press+Start+2P|VT323","@import url - Network accessline 54
53,Neubrutalist Bold,"Display + Sans",Lexend Mega,Public Sans,"bold, neubrutalist, loud, strong, geometric, quirky","Neubrutalist designs, Gen Z brands, bold marketing","https://fonts.google.com/share?selection.family=Lexend+Mega:wght@100.. - Network accessline 55
54,Academic/Archival,"Serif + Serif",EB Garamond,Crimson Text,"academic, old-school, university, research, serious, traditional","University sites, archives, research papers, history","https://fonts.google.com/share?selection.family=Crimson - Network accessline 56
55,Spatial Clear,"Sans + Sans",Inter,Inter,"spatial, legible, glass, system, clean, neutral","Spatial computing, AR/VR, glassmorphism interfaces","https://fonts.google.com/share?selection.family=Inter:wght@300;400;500;600","@import url('htt - Network accessline 57
56,Kinetic Motion,"Display + Mono",Syncopate,Space Mono,"kinetic, motion, futuristic, speed, wide, tech","Music festivals, automotive, high-energy brands","https://fonts.google.com/share?selection.family=Space+Mono:wght@400;700|Syncopate:wg - Network accessline 58
57,Gen Z Brutal,"Display + Sans",Anton,Epilogue,"brutal, loud, shouty, meme, internet, bold","Gen Z marketing, streetwear, viral campaigns","https://fonts.google.com/share?selection.family=Anton|Epilogue:wght@400;500;600;700","@import url(' - Network accessline 59
58,Minimalist Monochrome Editorial,"Serif + Serif + Mono (Triple Stack)",Playfair Display,Source Serif 4,"monochrome, editorial, austere, typographic, pocket manifesto, luxury, high contrast, brutalist mobile","Luxury fashion mobile apps, e - Network accessline 60
59,Modern Dark Cinema (Inter System),"Sans + Mono",Inter,Inter,"dark, cinematic, technical, precision, clean, premium, developer, professional, high-end utility","Developer tools, fintech/trading, AI dashboards, streaming platforms, high-en - Network accessline 61
60,SaaS Mobile Boutique (Calistoga + Inter),"Display Serif + Sans + Mono",Calistoga,Inter,"saas, boutique, electric, warm, editorial, bold, premium, fintech, business, dual font, human warmth","B2B SaaS mobile, fintech apps, analytics dashb - Network accessline 62
61,Terminal CLI Monospace,"Mono + Mono (Single Family)",JetBrains Mono,JetBrains Mono,"terminal, cli, hacker, monospace, matrix, developer, retro-future, command line, precision, OLED","Developer tools, Web3/blockchain apps, hacker aestheti - Network accessline 63
62,Kinetic Brutalism (Space Grotesk),"Geometric Sans (Single Dominant)",Space Grotesk,Space Grotesk,"kinetic, brutalist, aggressive, uppercase, oversized, display, motion, street, bold, high-energy, zine","Music/culture apps, sports platfor - Network accessline 64
63,Flat Design Mobile (System Bold),"Sans + Sans",Inter,Inter,"flat, clean, system, bold, geometric, cross-platform, icon, poster, minimal, functional, responsive","Cross-platform apps, dashboards, system UI, onboarding, marketing pages, in - Network accessline 65
64,Material You MD3 (Roboto System),"Sans (System Default)",Roboto,Roboto,"material design 3, md3, android, google, tonal, friendly, rounded, accessible, adaptive","Android apps, cross-platform tools, productivity software, data-heavy B2B d - Network accessline 66
65,Neo Brutalism Mobile (Space Grotesk Heavy),"Geometric Sans (Bold-Only)",Space Grotesk,Space Grotesk,"neo brutalism, pop art, loud, bold, heavy, stickers, mechanical, high contrast, cream, gen-z","Creative tools, Gen-Z marketing, e-commer - Network accessline 67
66,Bold Typography Mobile (Inter-Tight Poster),"Sans + Serif (Display) + Mono","Inter","Playfair Display","bold typography, editorial, poster, near-black, vermillion, luxury, type-as-hero, manifesto, high-contrast","Creative brand flagships - Network accessline 68
67,Academia Mobile (Cormorant + Crimson + Cinzel),"Serif + Book Serif + Engraved (Triple Stack)","Cormorant Garamond","Crimson Pro","academia, library, mahogany, parchment, brass, scholarly, prestige, antique, victorian, leather","Knowledge - Network accessline 69
68,Cyberpunk Mobile (Orbitron + JetBrains Mono),"Tech Display + Mono","Orbitron","JetBrains Mono","cyberpunk, neon, glitch, hud, sci-fi, dark, matrix green, magenta, chamfered, tactical","Gaming companion apps, fintech/crypto, data visualiz - Network accessline 70
69,Web3 Bitcoin DeFi (Space Grotesk + Inter + Mono),"Geometric Sans + Sans + Mono (Triple)","Space Grotesk","Inter","web3, bitcoin, defi, digital gold, fintech, crypto, trustless, luminescent, precision, dark","DeFi protocols and wallets, N - Network accessline 71
70,Claymorphism Mobile (Nunito + DM Sans),"Display Rounded + Geometric Sans","Nunito","DM Sans","claymorphism, clay, rounded, playful, candy, bubbly, soft, 3d, children, education, tactile, spring, nunito, dm sans","Children education apps, - Network accessline 72
71,Enterprise SaaS Mobile (Plus Jakarta Sans),"Geometric Sans (Single Family)","Plus Jakarta Sans","Plus Jakarta Sans","enterprise, saas, b2b, professional, indigo, modern, approachable, legible, ios dynamic type, android scaling","B2B SaaS - Network accessline 73
72,Sketch Hand-Drawn Mobile (Kalam + Patrick Hand),"Handwritten + Handwritten (Dual)","Kalam","Patrick Hand","sketch, hand-drawn, handwriting, human, imperfect, organic, paper, kalam, patrick hand, education, journal, creative","Journaling - Network accessline 74
73,Neumorphism Mobile (Plus Jakarta Sans + System),"Geometric Sans (System Fallback)","Plus Jakarta Sans","Plus Jakarta Sans","neumorphism, soft ui, monochromatic, cool grey, minimal, physical, depth, ceramic, system font, utility","Smart h
skills/forge-design/scripts/core.py
- Executable scriptline 1
#!/usr/bin/env python3
skills/forge-design/scripts/design_system.py
- Executable scriptline 1
#!/usr/bin/env python3
skills/forge-design/scripts/search.py
- Executable scriptline 1
#!/usr/bin/env python3
skills/forge-doc-policy/scripts/.gitkeep
- Executable scriptline 1
Executable file
skills/forge-doc-policy/scripts/init-project.sh
- Executable scriptline 1
#!/bin/bash
skills/forge-doc-release/SKILL.md
- Broad permissionsline 1
Bash
skills/forge-doc-release/references/release-details.md
- Dangerous shell operationline 251
rm -f /tmp/doc-release-pr-body-$$.md
skills/forge-eng/references/tdd-guide.md
- Network accessline 88
1. 实现功能 2. 定义验证命令(必须在任务模板中明确写出): - API: curl -s http://localhost:3456/api/xxx | jq . - Network accessline 89
2. 定义验证命令(必须在任务模板中明确写出): - API: curl -s http://localhost:3456/api/xxx | jq . - 页面: 用 Playwright / browser-use 截图验证 - Network accessline 90
- API: curl -s http://localhost:3456/api/xxx | jq .
skills/forge-eng/references/verification-checklist.md
- Network accessline 39
| "Bug 已修复" | 复现步骤验证:通过 | 改了代码 / "应该修好了" | | "回归测试通过" | 红绿循环验证 | 测试只通过了一次 | | "API 正常" | curl 返回期望结果 | 代码看起来对 | - Network accessline 40
| "回归测试通过" | 红绿循环验证 | 测试只通过了一次 | | "API 正常" | curl 返回期望结果 | 代码看起来对 | | "页面正确" | 截图/浏览器验证 | DOM 结构看起来对 | - Network accessline 41
| "API 正常" | curl 返回期望结果 | 代码看起来对 | - Network accessline 79
# GET 请求 curl -s -w "\nHTTP Status: %{http_code}\n" http://localhost:3456/api/xxx - Network accessline 80
curl -s -w "\nHTTP Status: %{http_code}\n" http://localhost:3456/api/xxx - Network accessline 82
# POST 请求 curl -s -X POST http://localhost:3456/api/xxx \ - Network accessline 83
curl -s -X POST http://localhost:3456/api/xxx \ - Network accessline 93
browser = p.chromium.launch(headless=True) page = browser.new_page() page.goto('http://localhost:3456') - Network accessline 94
page = browser.new_page() page.goto('http://localhost:3456') page.wait_for_load_state('networkidle') - Network accessline 95
page.goto('http://localhost:3456') - Network accessline 158
Task-3 of Wave-2 验证:npm test → 47 passed, 0 failed; curl /api/search?q=测试 → 200 OK, 3 results - Network accessline 159
验证:npm test → 47 passed, 0 failed; curl /api/search?q=测试 → 200 OK, 3 results
skills/forge-eng/references/wave-execution.md
skills/forge-feature-doc/README.md
- Access to secretsline 53
[Credential-related source omitted]
skills/forge-feature-doc/scripts/annotate.mjs
- Executable scriptline 1
Executable file
skills/forge-feature-doc/scripts/check.mjs
- Executable scriptline 1
#!/usr/bin/env node
skills/forge-feature-doc/scripts/render-diagrams.mjs
- Executable scriptline 1
#!/usr/bin/env node
skills/forge-feature-doc/scripts/scaffold.mjs
- Executable scriptline 1
#!/usr/bin/env node
skills/forge-fupan/README.md
- Access to secretsline 35
[Credential-related source omitted]
skills/forge-fupan/SKILL.md
skills/forge-fupan/parse_tokens.py
- Executable scriptline 1
#!/usr/bin/env python3
skills/forge-qa/SKILL.md
- Broad permissionsline 1
Bash - Network accessline 193
else for port in 3000 3456 4000 5173 8080 8081; do curl -s -o /dev/null -w "%{http_code}" "http://localhost:$port" 2>/dev/null | grep -qE "200|301|302|304" && echo " http://localhost:$port ✓(旧项目兜底探测)" - Network accessline 194
for port in 3000 3456 4000 5173 8080 8081; do curl -s -o /dev/null -w "%{http_code}" "http://localhost:$port" 2>/dev/null | grep -qE "200|301|302|304" && echo " http://localhost:$port ✓(旧项目兜底探测)" done - Network accessline 195
curl -s -o /dev/null -w "%{http_code}" "http://localhost:$port" 2>/dev/null | grep -qE "200|301|302|304" && echo " http://localhost:$port ✓(旧项目兜底探测)"
skills/forge-qa/references/mode-a-execution.md
- Network accessline 229
"generated_at": "2026-03-28T10:00:00Z", "scope": "full | diff-aware | regression", "app_url": "http://localhost:8080", - Network accessline 230
"scope": "full | diff-aware | regression", "app_url": "http://localhost:8080", "selector_strategy": "data-* + text + semantic" - Network accessline 231
"app_url": "http://localhost:8080",
skills/forge-qa/references/mode-b-regression.md
- Network accessline 38
|---|---|---| | UI 交互 / 视觉 / 控制台 | browser-use:browser(Codex 可用时优先)或 Playwright | 需要真实浏览器和用户视角截图 | | API / 数据 / 业务逻辑 | curl / 代码单元测试 | 更快更直接 | - Network accessline 39
| UI 交互 / 视觉 / 控制台 | browser-use:browser(Codex 可用时优先)或 Playwright | 需要真实浏览器和用户视角截图 | | API / 数据 / 业务逻辑 | curl / 代码单元测试 | 更快更直接 | | 响应式 / 可访问性 | Playwright | 专业断言库 | - Network accessline 40
| API / 数据 / 业务逻辑 | curl / 代码单元测试 | 更快更直接 |
skills/forge-qa/references/test-dimensions.md
- Network accessline 113
// ── 执行 ── const BASE = 'http://127.0.0.1:8080'; - Network accessline 114
const BASE = 'http://127.0.0.1:8080'; - Network accessline 176
const browser = await chromium.launch(); const page = await browser.newPage({ viewport: { width: 1440, height: 900 } }); const BASE = 'http://127.0.0.1:8080'; - Network accessline 178
const BASE = 'http://127.0.0.1:8080'; - Network accessline 325
const browser = await chromium.launch(); const page = await browser.newPage({ viewport: { width: 1440, height: 900 } }); const BASE = 'http://127.0.0.1:8080'; - Network accessline 327
const BASE = 'http://127.0.0.1:8080'; - Network accessline 480
const browser = await chromium.launch(); const page = await browser.newPage({ viewport: { width: 1440, height: 900 } }); const BASE = 'http://127.0.0.1:8080'; - Network accessline 482
const BASE = 'http://127.0.0.1:8080'; - Network accessline 684
const browser = await chromium.launch(); const page = await browser.newPage({ viewport: { width: 1440, height: 900 } }); const BASE = 'http://127.0.0.1:8080'; - Network accessline 686
const BASE = 'http://127.0.0.1:8080'; - Network accessline 863
const browser = await chromium.launch(); const BASE = 'http://127.0.0.1:8080'; - Network accessline 864
const BASE = 'http://127.0.0.1:8080'; - Network accessline 1024
const browser = await chromium.launch(); const page = await browser.newPage({ viewport: { width: 1440, height: 900 } }); const BASE = 'http://127.0.0.1:8080'; - Network accessline 1026
const BASE = 'http://127.0.0.1:8080'; - Network accessline 1042
// 注入 axe-core(CDN 或本地文件) await page.addScriptTag({ url: 'https://cdnjs.cloudflare.com/ajax/libs/axe-core/4.9.1/axe.min.js', - Network accessline 1043
await page.addScriptTag({ url: 'https://cdnjs.cloudflare.com/ajax/libs/axe-core/4.9.1/axe.min.js', }); - Network accessline 1044
url: 'https://cdnjs.cloudflare.com/ajax/libs/axe-core/4.9.1/axe.min.js', - Network accessline 1250
const browser = await chromium.launch(); const page = await browser.newPage({ viewport: { width: 1440, height: 900 } }); const BASE = 'http://127.0.0.1:8080'; - Network accessline 1252
const BASE = 'http://127.0.0.1:8080'; - Network accessline 1446
const browser = await chromium.launch(); const page = await browser.newPage({ viewport: { width: 1440, height: 900 } }); const BASE = 'http://127.0.0.1:8080'; - Network accessline 1448
const BASE = 'http://127.0.0.1:8080'; - Network accessline 1681
const browser = await chromium.launch(); const page = await browser.newPage({ viewport: { width: 1440, height: 900 } }); const BASE = 'http://127.0.0.1:8080'; - Network accessline 1683
const BASE = 'http://127.0.0.1:8080';
skills/forge-qa/scripts/qa-runner.mjs
- Executable scriptline 1
#!/usr/bin/env node - Network accessline 14
* * B) 直接执行 test-spec.json: * node qa-runner.mjs --spec=test-spec.json --url=http://localhost:8080 - Network accessline 15
* B) 直接执行 test-spec.json: * node qa-runner.mjs --spec=test-spec.json --url=http://localhost:8080 * - Network accessline 16
* node qa-runner.mjs --spec=test-spec.json --url=http://localhost:8080 - Network accessline 17
* * C) 执行内联测试脚本: * node qa-runner.mjs --run=my-test.mjs --url=http://localhost:8080 - Network accessline 18
* C) 执行内联测试脚本: * node qa-runner.mjs --run=my-test.mjs --url=http://localhost:8080 */ - Network accessline 19
* node qa-runner.mjs --run=my-test.mjs --url=http://localhost:8080 - Network accessline 377
const specPath = getArg('spec'); const runPath = getArg('run'); const url = getArg('url') || 'http://localhost:8080'; - Network accessline 378
const runPath = getArg('run'); const url = getArg('url') || 'http://localhost:8080'; const outputPath = getArg('output'); - Network accessline 379
const url = getArg('url') || 'http://localhost:8080'; - Network accessline 386
用法: node qa-runner.mjs --spec=test-spec.json --url=http://localhost:8080 - Network accessline 387
node qa-runner.mjs --spec=test-spec.json --url=http://localhost:8080 - Network accessline 388
node qa-runner.mjs --run=my-test.mjs --url=http://localhost:8080 - Network accessline 391
--spec=<path> test-spec.json 路径(结构化测试规格) --run=<path> 自定义测试脚本路径(必须 export default async function) --url=<url> 应用 URL(默认 http://localhost:8080) - Network accessline 392
--run=<path> 自定义测试脚本路径(必须 export default async function) --url=<url> 应用 URL(默认 http://localhost:8080) --output=<path> 结果输出路径(默认 qa_screenshots/test-results.json) - Network accessline 393
--url=<url> 应用 URL(默认 http://localhost:8080)
skills/forge-review/SKILL.md
- Broad permissionsline 1
Bash
skills/forge-ship/SKILL.md
- Broad permissionsline 1
Bash
skills/forge-status/SKILL.md
- Broad permissionsline 1
Bash
tools/fupan-workbench/__init__.py
- Executable scriptline 1
Executable file
tools/fupan-workbench/frontend/package-lock.json
- Network accessline 19
"node_modules/@babel/code-frame": { "version": "7.29.0", "resolved": "https://registry.npmmirror.com/@babel/code-frame/-/code-frame-7.29.0.tgz", - Network accessline 20
"version": "7.29.0", "resolved": "https://registry.npmmirror.com/@babel/code-frame/-/code-frame-7.29.0.tgz", "integrity": "sha512-9NhCeYjq9+3uxgdtp20LSiJXJvN0FeCtNGpJxuMFZ1Kv3cWUNb6DOhJwUvcVCzKGR66cw4njwM6hrJLqgOwbcw==", - Network accessline 21
"resolved": "https://registry.npmmirror.com/@babel/code-frame/-/code-frame-7.29.0.tgz", - Network accessline 32
"node_modules/@babel/compat-data": { "version": "7.29.0", "resolved": "https://registry.npmmirror.com/@babel/compat-data/-/compat-data-7.29.0.tgz", - Network accessline 33
"version": "7.29.0", "resolved": "https://registry.npmmirror.com/@babel/compat-data/-/compat-data-7.29.0.tgz", "integrity": "sha512-T1NCJqT/j9+cn8fvkt7jtwbLBfLC/1y1c7NtCeXFRgzGTsafi68MRv8yzkYSapBnFA6L3U2VSc02ciDzoAJhJg==", - Network accessline 34
"resolved": "https://registry.npmmirror.com/@babel/compat-data/-/compat-data-7.29.0.tgz", - Network accessline 40
"node_modules/@babel/core": { "version": "7.29.0", "resolved": "https://registry.npmmirror.com/@babel/core/-/core-7.29.0.tgz", - Network accessline 41
"version": "7.29.0", "resolved": "https://registry.npmmirror.com/@babel/core/-/core-7.29.0.tgz", "integrity": "sha512-CGOfOJqWjg2qW/Mb6zNsDm+u5vFQ8DxXfbM09z69p5Z6+mE1ikP2jUXw+j42Pf1XTYED2Rni5f95npYeuwMDQA==", - Network accessline 42
"resolved": "https://registry.npmmirror.com/@babel/core/-/core-7.29.0.tgz", - Network accessline 64
"funding": { "type": "opencollective", "url": "https://opencollective.com/babel" - Network accessline 65
"type": "opencollective", "url": "https://opencollective.com/babel" } - Network accessline 66
"url": "https://opencollective.com/babel" - Network accessline 69
"node_modules/@babel/generator": { "version": "7.29.1", "resolved": "https://registry.npmmirror.com/@babel/generator/-/generator-7.29.1.tgz", - Network accessline 70
"version": "7.29.1", "resolved": "https://registry.npmmirror.com/@babel/generator/-/generator-7.29.1.tgz", "integrity": "sha512-qsaF+9Qcm2Qv8SRIMMscAvG4O3lJ0F1GuMo5HR/Bp02LopNgnZBC/EkbevHFeGs4ls/oPz9v+Bsmzbkbe+0dUw==", - Network accessline 71
"resolved": "https://registry.npmmirror.com/@babel/generator/-/generator-7.29.1.tgz", - Network accessline 84
"node_modules/@babel/helper-compilation-targets": { "version": "7.28.6", "resolved": "https://registry.npmmirror.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.28.6.tgz", - Network accessline 85
"version": "7.28.6", "resolved": "https://registry.npmmirror.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.28.6.tgz", "integrity": "sha512-JYtls3hqi15fcx5GaSNL7SCTJ2MNmjrkHXg4FSpOA/grxK8KwyZ5bubHsCq8FXCkua - Network accessline 86
"resolved": "https://registry.npmmirror.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.28.6.tgz", - Network accessline 99
"node_modules/@babel/helper-globals": { "version": "7.28.0", "resolved": "https://registry.npmmirror.com/@babel/helper-globals/-/helper-globals-7.28.0.tgz", - Network accessline 100
"version": "7.28.0", "resolved": "https://registry.npmmirror.com/@babel/helper-globals/-/helper-globals-7.28.0.tgz", "integrity": "sha512-+W6cISkXFa1jXsDEdYA8HeevQT/FULhxzR99pxphltZcVaugps53THCeiWA8SguxxpSp3gKPiuYfSWopkLQ4hw==", - Network accessline 101
"resolved": "https://registry.npmmirror.com/@babel/helper-globals/-/helper-globals-7.28.0.tgz", - Network accessline 107
"node_modules/@babel/helper-module-imports": { "version": "7.28.6", "resolved": "https://registry.npmmirror.com/@babel/helper-module-imports/-/helper-module-imports-7.28.6.tgz", - Network accessline 108
"version": "7.28.6", "resolved": "https://registry.npmmirror.com/@babel/helper-module-imports/-/helper-module-imports-7.28.6.tgz", "integrity": "sha512-l5XkZK7r7wa9LucGw9LwZyyCUscb4x37JWTPz7swwFE/0FMQAGpiWUZn8u9DzkSBWEcK25jmvubf - Network accessline 109
"resolved": "https://registry.npmmirror.com/@babel/helper-module-imports/-/helper-module-imports-7.28.6.tgz", - Network accessline 119
"node_modules/@babel/helper-module-transforms": { "version": "7.28.6", "resolved": "https://registry.npmmirror.com/@babel/helper-module-transforms/-/helper-module-transforms-7.28.6.tgz", - Network accessline 120
"version": "7.28.6", "resolved": "https://registry.npmmirror.com/@babel/helper-module-transforms/-/helper-module-transforms-7.28.6.tgz", "integrity": "sha512-67oXFAYr2cDLDVGLXTEABjdBJZ6drElUSI7WKp70NrpyISso3plG9SAGEF6y7zbha/wOzU - Network accessline 121
"resolved": "https://registry.npmmirror.com/@babel/helper-module-transforms/-/helper-module-transforms-7.28.6.tgz", - Network accessline 135
"node_modules/@babel/helper-plugin-utils": { "version": "7.28.6", "resolved": "https://registry.npmmirror.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.28.6.tgz", - Network accessline 136
"version": "7.28.6", "resolved": "https://registry.npmmirror.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.28.6.tgz", "integrity": "sha512-S9gzZ/bz83GRysI7gAD4wPT/AI3uCnY+9xn+Mx/KPs2JwHJIz1W8PZkg2cqyt3RNOBM8ejcXhV6y8Og7 - Network accessline 137
"resolved": "https://registry.npmmirror.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.28.6.tgz", - Network accessline 143
"node_modules/@babel/helper-string-parser": { "version": "7.27.1", "resolved": "https://registry.npmmirror.com/@babel/helper-string-parser/-/helper-string-parser-7.27.1.tgz", - Network accessline 144
"version": "7.27.1", "resolved": "https://registry.npmmirror.com/@babel/helper-string-parser/-/helper-string-parser-7.27.1.tgz", "integrity": "sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWP - Network accessline 145
"resolved": "https://registry.npmmirror.com/@babel/helper-string-parser/-/helper-string-parser-7.27.1.tgz", - Network accessline 151
"node_modules/@babel/helper-validator-identifier": { "version": "7.28.5", "resolved": "https://registry.npmmirror.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.28.5.tgz", - Network accessline 152
"version": "7.28.5", "resolved": "https://registry.npmmirror.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.28.5.tgz", "integrity": "sha512-qSs4ifwzKJSV39ucNjsvc6WVHs6b7S03sOh2OcHF9UHfVPqWWALUsNUVzhSBiItj - Network accessline 153
"resolved": "https://registry.npmmirror.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.28.5.tgz", - Network accessline 159
"node_modules/@babel/helper-validator-option": { "version": "7.27.1", "resolved": "https://registry.npmmirror.com/@babel/helper-validator-option/-/helper-validator-option-7.27.1.tgz", - Network accessline 160
"version": "7.27.1", "resolved": "https://registry.npmmirror.com/@babel/helper-validator-option/-/helper-validator-option-7.27.1.tgz", "integrity": "sha512-YvjJow9FxbhFFKDSuFnVCe2WxXk1zWc22fFePVNEaWJEu8IrZVlda6N0uHwzZrUM1il7NC9M - Network accessline 161
"resolved": "https://registry.npmmirror.com/@babel/helper-validator-option/-/helper-validator-option-7.27.1.tgz", - Network accessline 167
"node_modules/@babel/helpers": { "version": "7.29.2", "resolved": "https://registry.npmmirror.com/@babel/helpers/-/helpers-7.29.2.tgz", - Network accessline 168
"version": "7.29.2", "resolved": "https://registry.npmmirror.com/@babel/helpers/-/helpers-7.29.2.tgz", "integrity": "sha512-HoGuUs4sCZNezVEKdVcwqmZN8GoHirLUcLaYVNBK2J0DadGtdcqgr3BCbvH8+XUo4NGjNl3VOtSjEKNzqfFgKw==", - Network accessline 169
"resolved": "https://registry.npmmirror.com/@babel/helpers/-/helpers-7.29.2.tgz", - Network accessline 179
"node_modules/@babel/parser": { "version": "7.29.2", "resolved": "https://registry.npmmirror.com/@babel/parser/-/parser-7.29.2.tgz", - Network accessline 180
"version": "7.29.2", "resolved": "https://registry.npmmirror.com/@babel/parser/-/parser-7.29.2.tgz", "integrity": "sha512-4GgRzy/+fsBa72/RZVJmGKPmZu9Byn8o4MoLpmNe1m8ZfYnz5emHLQz3U4gLud6Zwl0RZIcgiLD7Uq7ySFuDLA==", - Network accessline 181
"resolved": "https://registry.npmmirror.com/@babel/parser/-/parser-7.29.2.tgz", - Network accessline 193
"node_modules/@babel/plugin-transform-react-jsx-self": { "version": "7.27.1", "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-react-jsx-self/-/plugin-transform-react-jsx-self-7.27.1.tgz", - Network accessline 194
"version": "7.27.1", "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-react-jsx-self/-/plugin-transform-react-jsx-self-7.27.1.tgz", "integrity": "sha512-6UzkCs+ejGdZ5mFFC/OCUrv028ab2fp1znZmCZjAOBKiBK2jXD1O+BPS - Network accessline 195
"resolved": "https://registry.npmmirror.com/@babel/plugin-transform-react-jsx-self/-/plugin-transform-react-jsx-self-7.27.1.tgz", - Network accessline 207
"node_modules/@babel/plugin-transform-react-jsx-source": { "version": "7.27.1", "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-react-jsx-source/-/plugin-transform-react-jsx-source-7.27.1.tgz", - Network accessline 208
"version": "7.27.1", "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-react-jsx-source/-/plugin-transform-react-jsx-source-7.27.1.tgz", "integrity": "sha512-zbwoTsBruTeKB9hSq73ha66iFeJHuaFkUbwvqElnygoNbj/jHRsS - Network accessline 209
"resolved": "https://registry.npmmirror.com/@babel/plugin-transform-react-jsx-source/-/plugin-transform-react-jsx-source-7.27.1.tgz", - Network accessline 221
"node_modules/@babel/template": { "version": "7.28.6", "resolved": "https://registry.npmmirror.com/@babel/template/-/template-7.28.6.tgz", - Network accessline 222
"version": "7.28.6", "resolved": "https://registry.npmmirror.com/@babel/template/-/template-7.28.6.tgz", "integrity": "sha512-YA6Ma2KsCdGb+WC6UpBVFJGXL58MDA6oyONbjyF/+5sBgxY/dwkhLogbMT2GXXyU84/IhRw/2D1Os1B/giz+BQ==", - Network accessline 223
"resolved": "https://registry.npmmirror.com/@babel/template/-/template-7.28.6.tgz", - Network accessline 234
"node_modules/@babel/traverse": { "version": "7.29.0", "resolved": "https://registry.npmmirror.com/@babel/traverse/-/traverse-7.29.0.tgz", - Network accessline 235
"version": "7.29.0", "resolved": "https://registry.npmmirror.com/@babel/traverse/-/traverse-7.29.0.tgz", "integrity": "sha512-4HPiQr0X7+waHfyXPZpWPfWL/J7dcN1mx9gL6WdQVMbPnF3+ZhSMs8tCxN7oHddJE9fhNE7+lxdnlyemKfJRuA==", - Network accessline 236
"resolved": "https://registry.npmmirror.com/@babel/traverse/-/traverse-7.29.0.tgz", - Network accessline 251
"node_modules/@babel/types": { "version": "7.29.0", "resolved": "https://registry.npmmirror.com/@babel/types/-/types-7.29.0.tgz", - Network accessline 252
"version": "7.29.0", "resolved": "https://registry.npmmirror.com/@babel/types/-/types-7.29.0.tgz", "integrity": "sha512-LwdZHpScM4Qz8Xw2iKSzS+cfglZzJGvofQICy7W7v4caru4EaAmyUuO6BGrbyQ2mYV11W0U8j5mBhd14dd3B0A==", - Network accessline 253
"resolved": "https://registry.npmmirror.com/@babel/types/-/types-7.29.0.tgz", - Network accessline 263
"node_modules/@esbuild/aix-ppc64": { "version": "0.21.5", "resolved": "https://registry.npmmirror.com/@esbuild/aix-ppc64/-/aix-ppc64-0.21.5.tgz", - Network accessline 264
"version": "0.21.5", "resolved": "https://registry.npmmirror.com/@esbuild/aix-ppc64/-/aix-ppc64-0.21.5.tgz", "integrity": "sha512-1SDgH6ZSPTlggy1yI6+Dbkiz8xzpHJEVAlF/AM1tHPLsf5STom9rwtjE4hKAF20FfXXNTFqEYXyJNWh1GiZedQ==", - Network accessline 265
"resolved": "https://registry.npmmirror.com/@esbuild/aix-ppc64/-/aix-ppc64-0.21.5.tgz", - Network accessline 278
"node_modules/@esbuild/android-arm": { "version": "0.21.5", "resolved": "https://registry.npmmirror.com/@esbuild/android-arm/-/android-arm-0.21.5.tgz", - Network accessline 279
"version": "0.21.5", "resolved": "https://registry.npmmirror.com/@esbuild/android-arm/-/android-arm-0.21.5.tgz", "integrity": "sha512-vCPvzSjpPHEi1siZdlvAlsPxXl7WbOVUBBAowWug4rJHb68Ox8KualB+1ocNvT5fjv6wpkX6o/iEpbDrf68zcg==", - Network accessline 280
"resolved": "https://registry.npmmirror.com/@esbuild/android-arm/-/android-arm-0.21.5.tgz", - Network accessline 293
"node_modules/@esbuild/android-arm64": { "version": "0.21.5", "resolved": "https://registry.npmmirror.com/@esbuild/android-arm64/-/android-arm64-0.21.5.tgz", - Network accessline 294
"version": "0.21.5", "resolved": "https://registry.npmmirror.com/@esbuild/android-arm64/-/android-arm64-0.21.5.tgz", "integrity": "sha512-c0uX9VAUBQ7dTDCjq+wdyGLowMdtR/GoC2U5IYk/7D1H1JYC0qseD7+11iMP2mRLN9RcCMRcjC4YMclCzGwS/A==", - Network accessline 295
"resolved": "https://registry.npmmirror.com/@esbuild/android-arm64/-/android-arm64-0.21.5.tgz", - Network accessline 308
"node_modules/@esbuild/android-x64": { "version": "0.21.5", "resolved": "https://registry.npmmirror.com/@esbuild/android-x64/-/android-x64-0.21.5.tgz", - Network accessline 309
"version": "0.21.5", "resolved": "https://registry.npmmirror.com/@esbuild/android-x64/-/android-x64-0.21.5.tgz", "integrity": "sha512-D7aPRUUNHRBwHxzxRvp856rjUHRFW1SdQATKXH2hqA0kAZb1hKmi02OpYRacl0TxIGz/ZmXWlbZgjwWYaCakTA==", - Network accessline 310
"resolved": "https://registry.npmmirror.com/@esbuild/android-x64/-/android-x64-0.21.5.tgz", - Network accessline 323
"node_modules/@esbuild/darwin-arm64": { "version": "0.21.5", "resolved": "https://registry.npmmirror.com/@esbuild/darwin-arm64/-/darwin-arm64-0.21.5.tgz", - Network accessline 324
"version": "0.21.5", "resolved": "https://registry.npmmirror.com/@esbuild/darwin-arm64/-/darwin-arm64-0.21.5.tgz", "integrity": "sha512-DwqXqZyuk5AiWWf3UfLiRDJ5EDd49zg6O9wclZ7kUMv2WRFr4HKjXp/5t8JZ11QbQfUS6/cRCKGwYhtNAY88kQ==", - Network accessline 325
"resolved": "https://registry.npmmirror.com/@esbuild/darwin-arm64/-/darwin-arm64-0.21.5.tgz", - Network accessline 338
"node_modules/@esbuild/darwin-x64": { "version": "0.21.5", "resolved": "https://registry.npmmirror.com/@esbuild/darwin-x64/-/darwin-x64-0.21.5.tgz", - Network accessline 339
"version": "0.21.5", "resolved": "https://registry.npmmirror.com/@esbuild/darwin-x64/-/darwin-x64-0.21.5.tgz", "integrity": "sha512-se/JjF8NlmKVG4kNIuyWMV/22ZaerB+qaSi5MdrXtd6R08kvs2qCN4C09miupktDitvh8jRFflwGFBQcxZRjbw==", - Network accessline 340
"resolved": "https://registry.npmmirror.com/@esbuild/darwin-x64/-/darwin-x64-0.21.5.tgz", - Network accessline 353
"node_modules/@esbuild/freebsd-arm64": { "version": "0.21.5", "resolved": "https://registry.npmmirror.com/@esbuild/freebsd-arm64/-/freebsd-arm64-0.21.5.tgz", - Network accessline 354
"version": "0.21.5", "resolved": "https://registry.npmmirror.com/@esbuild/freebsd-arm64/-/freebsd-arm64-0.21.5.tgz", "integrity": "sha512-5JcRxxRDUJLX8JXp/wcBCy3pENnCgBR9bN6JsY4OmhfUtIHe3ZW0mawA7+RDAcMLrMIZaf03NlQiX9DGyB8h4g==", - Network accessline 355
"resolved": "https://registry.npmmirror.com/@esbuild/freebsd-arm64/-/freebsd-arm64-0.21.5.tgz", - Network accessline 368
"node_modules/@esbuild/freebsd-x64": { "version": "0.21.5", "resolved": "https://registry.npmmirror.com/@esbuild/freebsd-x64/-/freebsd-x64-0.21.5.tgz", - Network accessline 369
"version": "0.21.5", "resolved": "https://registry.npmmirror.com/@esbuild/freebsd-x64/-/freebsd-x64-0.21.5.tgz", "integrity": "sha512-J95kNBj1zkbMXtHVH29bBriQygMXqoVQOQYA+ISs0/2l3T9/kj42ow2mpqerRBxDJnmkUDCaQT/dfNXWX/ZZCQ==", - Network accessline 370
"resolved": "https://registry.npmmirror.com/@esbuild/freebsd-x64/-/freebsd-x64-0.21.5.tgz", - Network accessline 383
"node_modules/@esbuild/linux-arm": { "version": "0.21.5", "resolved": "https://registry.npmmirror.com/@esbuild/linux-arm/-/linux-arm-0.21.5.tgz", - Network accessline 384
"version": "0.21.5", "resolved": "https://registry.npmmirror.com/@esbuild/linux-arm/-/linux-arm-0.21.5.tgz", "integrity": "sha512-bPb5AHZtbeNGjCKVZ9UGqGwo8EUu4cLq68E95A53KlxAPRmUyYv2D6F0uUI65XisGOL1hBP5mTronbgo+0bFcA==", - Network accessline 385
"resolved": "https://registry.npmmirror.com/@esbuild/linux-arm/-/linux-arm-0.21.5.tgz", - Network accessline 398
"node_modules/@esbuild/linux-arm64": { "version": "0.21.5", "resolved": "https://registry.npmmirror.com/@esbuild/linux-arm64/-/linux-arm64-0.21.5.tgz", - Network accessline 399
"version": "0.21.5", "resolved": "https://registry.npmmirror.com/@esbuild/linux-arm64/-/linux-arm64-0.21.5.tgz", "integrity": "sha512-ibKvmyYzKsBeX8d8I7MH/TMfWDXBF3db4qM6sy+7re0YXya+K1cem3on9XgdT2EQGMu4hQyZhan7TeQ8XkGp4Q==", - Network accessline 400
"resolved": "https://registry.npmmirror.com/@esbuild/linux-arm64/-/linux-arm64-0.21.5.tgz", - Network accessline 413
"node_modules/@esbuild/linux-ia32": { "version": "0.21.5", "resolved": "https://registry.npmmirror.com/@esbuild/linux-ia32/-/linux-ia32-0.21.5.tgz", - Network accessline 414
"version": "0.21.5", "resolved": "https://registry.npmmirror.com/@esbuild/linux-ia32/-/linux-ia32-0.21.5.tgz", "integrity": "sha512-YvjXDqLRqPDl2dvRODYmmhz4rPeVKYvppfGYKSNGdyZkA01046pLWyRKKI3ax8fbJoK5QbxblURkwK/MWY18Tg==", - Network accessline 415
"resolved": "https://registry.npmmirror.com/@esbuild/linux-ia32/-/linux-ia32-0.21.5.tgz", - Network accessline 428
"node_modules/@esbuild/linux-loong64": { "version": "0.21.5", "resolved": "https://registry.npmmirror.com/@esbuild/linux-loong64/-/linux-loong64-0.21.5.tgz", - Network accessline 429
"version": "0.21.5", "resolved": "https://registry.npmmirror.com/@esbuild/linux-loong64/-/linux-loong64-0.21.5.tgz", "integrity": "sha512-uHf1BmMG8qEvzdrzAqg2SIG/02+4/DHB6a9Kbya0XDvwDEKCoC8ZRWI5JJvNdUjtciBGFQ5PuBlpEOXQj+JQSg==", - Network accessline 430
"resolved": "https://registry.npmmirror.com/@esbuild/linux-loong64/-/linux-loong64-0.21.5.tgz", - Network accessline 443
"node_modules/@esbuild/linux-mips64el": { "version": "0.21.5", "resolved": "https://registry.npmmirror.com/@esbuild/linux-mips64el/-/linux-mips64el-0.21.5.tgz", - Network accessline 444
"version": "0.21.5", "resolved": "https://registry.npmmirror.com/@esbuild/linux-mips64el/-/linux-mips64el-0.21.5.tgz", "integrity": "sha512-IajOmO+KJK23bj52dFSNCMsz1QP1DqM6cwLUv3W1QwyxkyIWecfafnI555fvSGqEKwjMXVLokcV5ygHW5b3Jbg== - Network accessline 445
"resolved": "https://registry.npmmirror.com/@esbuild/linux-mips64el/-/linux-mips64el-0.21.5.tgz", - Network accessline 458
"node_modules/@esbuild/linux-ppc64": { "version": "0.21.5", "resolved": "https://registry.npmmirror.com/@esbuild/linux-ppc64/-/linux-ppc64-0.21.5.tgz", - Network accessline 459
"version": "0.21.5", "resolved": "https://registry.npmmirror.com/@esbuild/linux-ppc64/-/linux-ppc64-0.21.5.tgz", "integrity": "sha512-1hHV/Z4OEfMwpLO8rp7CvlhBDnjsC3CttJXIhBi+5Aj5r+MBvy4egg7wCbe//hSsT+RvDAG7s81tAvpL2XAE4w==", - Network accessline 460
"resolved": "https://registry.npmmirror.com/@esbuild/linux-ppc64/-/linux-ppc64-0.21.5.tgz", - Network accessline 473
"node_modules/@esbuild/linux-riscv64": { "version": "0.21.5", "resolved": "https://registry.npmmirror.com/@esbuild/linux-riscv64/-/linux-riscv64-0.21.5.tgz", - Network accessline 474
"version": "0.21.5", "resolved": "https://registry.npmmirror.com/@esbuild/linux-riscv64/-/linux-riscv64-0.21.5.tgz", "integrity": "sha512-2HdXDMd9GMgTGrPWnJzP2ALSokE/0O5HhTUvWIbD3YdjME8JwvSCnNGBnTThKGEB91OZhzrJ4qIIxk/SBmyDDA==", - Network accessline 475
"resolved": "https://registry.npmmirror.com/@esbuild/linux-riscv64/-/linux-riscv64-0.21.5.tgz", - Network accessline 488
"node_modules/@esbuild/linux-s390x": { "version": "0.21.5", "resolved": "https://registry.npmmirror.com/@esbuild/linux-s390x/-/linux-s390x-0.21.5.tgz", - Network accessline 489
"version": "0.21.5", "resolved": "https://registry.npmmirror.com/@esbuild/linux-s390x/-/linux-s390x-0.21.5.tgz", "integrity": "sha512-zus5sxzqBJD3eXxwvjN1yQkRepANgxE9lgOW2qLnmr8ikMTphkjgXu1HR01K4FJg8h1kEEDAqDcZQtbrRnB41A==", - Network accessline 490
"resolved": "https://registry.npmmirror.com/@esbuild/linux-s390x/-/linux-s390x-0.21.5.tgz", - Network accessline 503
"node_modules/@esbuild/linux-x64": { "version": "0.21.5", "resolved": "https://registry.npmmirror.com/@esbuild/linux-x64/-/linux-x64-0.21.5.tgz", - Network accessline 504
"version": "0.21.5", "resolved": "https://registry.npmmirror.com/@esbuild/linux-x64/-/linux-x64-0.21.5.tgz", "integrity": "sha512-1rYdTpyv03iycF1+BhzrzQJCdOuAOtaqHTWJZCWvijKD2N5Xu0TtVC8/+1faWqcP9iBCWOmjmhoH94dH82BxPQ==", - Network accessline 505
"resolved": "https://registry.npmmirror.com/@esbuild/linux-x64/-/linux-x64-0.21.5.tgz", - Network accessline 518
"node_modules/@esbuild/netbsd-x64": { "version": "0.21.5", "resolved": "https://registry.npmmirror.com/@esbuild/netbsd-x64/-/netbsd-x64-0.21.5.tgz", - Network accessline 519
"version": "0.21.5", "resolved": "https://registry.npmmirror.com/@esbuild/netbsd-x64/-/netbsd-x64-0.21.5.tgz", "integrity": "sha512-Woi2MXzXjMULccIwMnLciyZH4nCIMpWQAs049KEeMvOcNADVxo0UBIQPfSmxB3CWKedngg7sWZdLvLczpe0tLg==", - Network accessline 520
"resolved": "https://registry.npmmirror.com/@esbuild/netbsd-x64/-/netbsd-x64-0.21.5.tgz", - Network accessline 533
"node_modules/@esbuild/openbsd-x64": { "version": "0.21.5", "resolved": "https://registry.npmmirror.com/@esbuild/openbsd-x64/-/openbsd-x64-0.21.5.tgz", - Network accessline 534
"version": "0.21.5", "resolved": "https://registry.npmmirror.com/@esbuild/openbsd-x64/-/openbsd-x64-0.21.5.tgz", "integrity": "sha512-HLNNw99xsvx12lFBUwoT8EVCsSvRNDVxNpjZ7bPn947b8gJPzeHWyNVhFsaerc0n3TsbOINvRP2byTZ5LKezow==", - Network accessline 535
"resolved": "https://registry.npmmirror.com/@esbuild/openbsd-x64/-/openbsd-x64-0.21.5.tgz", - Network accessline 548
"node_modules/@esbuild/sunos-x64": { "version": "0.21.5", "resolved": "https://registry.npmmirror.com/@esbuild/sunos-x64/-/sunos-x64-0.21.5.tgz", - Network accessline 549
"version": "0.21.5", "resolved": "https://registry.npmmirror.com/@esbuild/sunos-x64/-/sunos-x64-0.21.5.tgz", "integrity": "sha512-6+gjmFpfy0BHU5Tpptkuh8+uw3mnrvgs+dSPQXQOv3ekbordwnzTVEb4qnIvQcYXq6gzkyTnoZ9dZG+D4garKg==", - Network accessline 550
"resolved": "https://registry.npmmirror.com/@esbuild/sunos-x64/-/sunos-x64-0.21.5.tgz", - Network accessline 563
"node_modules/@esbuild/win32-arm64": { "version": "0.21.5", "resolved": "https://registry.npmmirror.com/@esbuild/win32-arm64/-/win32-arm64-0.21.5.tgz", - Network accessline 564
"version": "0.21.5", "resolved": "https://registry.npmmirror.com/@esbuild/win32-arm64/-/win32-arm64-0.21.5.tgz", "integrity": "sha512-Z0gOTd75VvXqyq7nsl93zwahcTROgqvuAcYDUr+vOv8uHhNSKROyU961kgtCD1e95IqPKSQKH7tBTslnS3tA8A==", - Network accessline 565
"resolved": "https://registry.npmmirror.com/@esbuild/win32-arm64/-/win32-arm64-0.21.5.tgz", - Network accessline 578
"node_modules/@esbuild/win32-ia32": { "version": "0.21.5", "resolved": "https://registry.npmmirror.com/@esbuild/win32-ia32/-/win32-ia32-0.21.5.tgz", - Network accessline 579
"version": "0.21.5", "resolved": "https://registry.npmmirror.com/@esbuild/win32-ia32/-/win32-ia32-0.21.5.tgz", "integrity": "sha512-SWXFF1CL2RVNMaVs+BBClwtfZSvDgtL//G/smwAc5oVK/UPu2Gu9tIaRgFmYFFKrmg3SyAjSrElf0TiJ1v8fYA==", - Network accessline 580
"resolved": "https://registry.npmmirror.com/@esbuild/win32-ia32/-/win32-ia32-0.21.5.tgz", - Network accessline 593
"node_modules/@esbuild/win32-x64": { "version": "0.21.5", "resolved": "https://registry.npmmirror.com/@esbuild/win32-x64/-/win32-x64-0.21.5.tgz", - Network accessline 594
"version": "0.21.5", "resolved": "https://registry.npmmirror.com/@esbuild/win32-x64/-/win32-x64-0.21.5.tgz", "integrity": "sha512-tQd/1efJuzPC6rCFwEvLtci/xNFcTZknmXs98FYDfGE4wP9ClFV98nyKrzJKVPMhdDnjzLhdUyMX4PsQAPjwIw==", - Network accessline 595
"resolved": "https://registry.npmmirror.com/@esbuild/win32-x64/-/win32-x64-0.21.5.tgz", - Network accessline 608
"node_modules/@jridgewell/gen-mapping": { "version": "0.3.13", "resolved": "https://registry.npmmirror.com/@jridgewell/gen-mapping/-/gen-mapping-0.3.13.tgz", - Network accessline 609
"version": "0.3.13", "resolved": "https://registry.npmmirror.com/@jridgewell/gen-mapping/-/gen-mapping-0.3.13.tgz", "integrity": "sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA==", - Network accessline 610
"resolved": "https://registry.npmmirror.com/@jridgewell/gen-mapping/-/gen-mapping-0.3.13.tgz", - Network accessline 617
"node_modules/@jridgewell/remapping": { "version": "2.3.5", "resolved": "https://registry.npmmirror.com/@jridgewell/remapping/-/remapping-2.3.5.tgz", - Network accessline 618
"version": "2.3.5", "resolved": "https://registry.npmmirror.com/@jridgewell/remapping/-/remapping-2.3.5.tgz", "integrity": "sha512-LI9u/+laYG4Ds1TDKSJW2YPrIlcVYOwi2fUC6xB43lueCjgxV4lffOCZCtYFiH6TNOX+tQKXx97T4IKHbhyHEQ==", - Network accessline 619
"resolved": "https://registry.npmmirror.com/@jridgewell/remapping/-/remapping-2.3.5.tgz", - Network accessline 626
"node_modules/@jridgewell/resolve-uri": { "version": "3.1.2", "resolved": "https://registry.npmmirror.com/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz", - Network accessline 627
"version": "3.1.2", "resolved": "https://registry.npmmirror.com/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz", "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==", - Network accessline 628
"resolved": "https://registry.npmmirror.com/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz", - Network accessline 634
"node_modules/@jridgewell/sourcemap-codec": { "version": "1.5.5", "resolved": "https://registry.npmmirror.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.5.tgz", - Network accessline 635
"version": "1.5.5", "resolved": "https://registry.npmmirror.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.5.tgz", "integrity": "sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0O - Network accessline 636
"resolved": "https://registry.npmmirror.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.5.tgz", - Network accessline 639
"node_modules/@jridgewell/trace-mapping": { "version": "0.3.31", "resolved": "https://registry.npmmirror.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.31.tgz", - Network accessline 640
"version": "0.3.31", "resolved": "https://registry.npmmirror.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.31.tgz", "integrity": "sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw= - Network accessline 641
"resolved": "https://registry.npmmirror.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.31.tgz", - Network accessline 648
"node_modules/@rollup/rollup-android-arm-eabi": { "version": "4.60.2", "resolved": "https://registry.npmmirror.com/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.60.2.tgz", - Network accessline 649
"version": "4.60.2", "resolved": "https://registry.npmmirror.com/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.60.2.tgz", "integrity": "sha512-dnlp69efPPg6Uaw2dVqzWRfAWRnYVb1XJ8CyyhIbZeaq4CA5/mLeZ1IEt9QqQxmbdvagjLI - Network accessline 650
"resolved": "https://registry.npmmirror.com/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.60.2.tgz", - Network accessline 660
"node_modules/@rollup/rollup-android-arm64": { "version": "4.60.2", "resolved": "https://registry.npmmirror.com/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.60.2.tgz", - Network accessline 661
"version": "4.60.2", "resolved": "https://registry.npmmirror.com/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.60.2.tgz", "integrity": "sha512-OqZTwDRDchGRHHm/hwLOL7uVPB9aUvI0am/eQuWMNyFHf5PSEQmyEeYYheA0EPPKUO/l0uigCp+ia - Network accessline 662
"resolved": "https://registry.npmmirror.com/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.60.2.tgz", - Network accessline 672
"node_modules/@rollup/rollup-darwin-arm64": { "version": "4.60.2", "resolved": "https://registry.npmmirror.com/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.60.2.tgz", - Network accessline 673
"version": "4.60.2", "resolved": "https://registry.npmmirror.com/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.60.2.tgz", "integrity": "sha512-UwRE7CGpvSVEQS8gUMBe1uADWjNnVgP3Iusyda1nSRwNDCsRjnGc7w6El6WLQsXmZTbLZx9cecegumc - Network accessline 674
"resolved": "https://registry.npmmirror.com/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.60.2.tgz", - Network accessline 684
"node_modules/@rollup/rollup-darwin-x64": { "version": "4.60.2", "resolved": "https://registry.npmmirror.com/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.60.2.tgz", - Network accessline 685
"version": "4.60.2", "resolved": "https://registry.npmmirror.com/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.60.2.tgz", "integrity": "sha512-gjEtURKLCC5VXm1I+2i1u9OhxFsKAQJKTVB8WvDAHF+oZlq0GTVFOlTlO1q3AlCTE/DF32c16ESvfgqR734 - Network accessline 686
"resolved": "https://registry.npmmirror.com/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.60.2.tgz", - Network accessline 696
"node_modules/@rollup/rollup-freebsd-arm64": { "version": "4.60.2", "resolved": "https://registry.npmmirror.com/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.60.2.tgz", - Network accessline 697
"version": "4.60.2", "resolved": "https://registry.npmmirror.com/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.60.2.tgz", "integrity": "sha512-Bcl6CYDeAgE70cqZaMojOi/eK63h5Me97ZqAQoh77VPjMysA/4ORQBRGo3rRy45x4MzVlU9uZxs8U - Network accessline 698
"resolved": "https://registry.npmmirror.com/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.60.2.tgz", - Network accessline 708
"node_modules/@rollup/rollup-freebsd-x64": { "version": "4.60.2", "resolved": "https://registry.npmmirror.com/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.60.2.tgz", - Network accessline 709
"version": "4.60.2", "resolved": "https://registry.npmmirror.com/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.60.2.tgz", "integrity": "sha512-LU+TPda3mAE2QB0/Hp5VyeKJivpC6+tlOXd1VMoXV/YFMvk/MNk5iXeBfB4MQGRWyOYVJ01625vjkr0Az - Network accessline 710
"resolved": "https://registry.npmmirror.com/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.60.2.tgz", - Network accessline 720
"node_modules/@rollup/rollup-linux-arm-gnueabihf": { "version": "4.60.2", "resolved": "https://registry.npmmirror.com/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.60.2.tgz", - Network accessline 721
"version": "4.60.2", "resolved": "https://registry.npmmirror.com/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.60.2.tgz", "integrity": "sha512-2QxQrM+KQ7DAW4o22j+XZ6RKdxjLD7BOWTP0Bv0tmjdyhXSsr2Ul1oJDQqh9Zf5qO - Network accessline 722
"resolved": "https://registry.npmmirror.com/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.60.2.tgz", - Network accessline 732
"node_modules/@rollup/rollup-linux-arm-musleabihf": { "version": "4.60.2", "resolved": "https://registry.npmmirror.com/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.60.2.tgz", - Network accessline 733
"version": "4.60.2", "resolved": "https://registry.npmmirror.com/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.60.2.tgz", "integrity": "sha512-TbziEu2DVsTEOPif2mKWkMeDMLoYjx95oESa9fkQQK7r/Orta0gnkcDpzwufEcA - Network accessline 734
"resolved": "https://registry.npmmirror.com/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.60.2.tgz", - Network accessline 744
"node_modules/@rollup/rollup-linux-arm64-gnu": { "version": "4.60.2", "resolved": "https://registry.npmmirror.com/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.60.2.tgz", - Network accessline 745
"version": "4.60.2", "resolved": "https://registry.npmmirror.com/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.60.2.tgz", "integrity": "sha512-bO/rVDiDUuM2YfuCUwZ1t1cP+/yqjqz+Xf2VtkdppefuOFS2OSeAfgafaHNkFn0t02hEyXngZ - Network accessline 746
"resolved": "https://registry.npmmirror.com/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.60.2.tgz", - Network accessline 756
"node_modules/@rollup/rollup-linux-arm64-musl": { "version": "4.60.2", "resolved": "https://registry.npmmirror.com/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.60.2.tgz", - Network accessline 757
"version": "4.60.2", "resolved": "https://registry.npmmirror.com/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.60.2.tgz", "integrity": "sha512-hr26p7e93Rl0Za+JwW7EAnwAvKkehh12BU1Llm9Ykiibg4uIr2rbpxG9WCf56GuvidlTG9K - Network accessline 758
"resolved": "https://registry.npmmirror.com/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.60.2.tgz", - Network accessline 768
"node_modules/@rollup/rollup-linux-loong64-gnu": { "version": "4.60.2", "resolved": "https://registry.npmmirror.com/@rollup/rollup-linux-loong64-gnu/-/rollup-linux-loong64-gnu-4.60.2.tgz", - Network accessline 769
"version": "4.60.2", "resolved": "https://registry.npmmirror.com/@rollup/rollup-linux-loong64-gnu/-/rollup-linux-loong64-gnu-4.60.2.tgz", "integrity": "sha512-pOjB/uSIyDt+ow3k/RcLvUAOGpysT2phDn7TTUB3n75SlIgZzM6NKAqlErPhoFU+npgY3 - Network accessline 770
"resolved": "https://registry.npmmirror.com/@rollup/rollup-linux-loong64-gnu/-/rollup-linux-loong64-gnu-4.60.2.tgz", - Network accessline 780
"node_modules/@rollup/rollup-linux-loong64-musl": { "version": "4.60.2", "resolved": "https://registry.npmmirror.com/@rollup/rollup-linux-loong64-musl/-/rollup-linux-loong64-musl-4.60.2.tgz", - Network accessline 781
"version": "4.60.2", "resolved": "https://registry.npmmirror.com/@rollup/rollup-linux-loong64-musl/-/rollup-linux-loong64-musl-4.60.2.tgz", "integrity": "sha512-2/w+q8jszv9Ww1c+6uJT3OwqhdmGP2/4T17cu8WuwyUuuaCDDJ2ojdyYwZzCxx0GcsZ - Network accessline 782
"resolved": "https://registry.npmmirror.com/@rollup/rollup-linux-loong64-musl/-/rollup-linux-loong64-musl-4.60.2.tgz", - Network accessline 792
"node_modules/@rollup/rollup-linux-ppc64-gnu": { "version": "4.60.2", "resolved": "https://registry.npmmirror.com/@rollup/rollup-linux-ppc64-gnu/-/rollup-linux-ppc64-gnu-4.60.2.tgz", - Network accessline 793
"version": "4.60.2", "resolved": "https://registry.npmmirror.com/@rollup/rollup-linux-ppc64-gnu/-/rollup-linux-ppc64-gnu-4.60.2.tgz", "integrity": "sha512-11+aL5vKheYgczxtPVVRhdptAM2H7fcDR5Gw4/bTcteuZBlH4oP9f5s9zYO9aGZvoGeBpqXI/ - Network accessline 794
"resolved": "https://registry.npmmirror.com/@rollup/rollup-linux-ppc64-gnu/-/rollup-linux-ppc64-gnu-4.60.2.tgz", - Network accessline 804
"node_modules/@rollup/rollup-linux-ppc64-musl": { "version": "4.60.2", "resolved": "https://registry.npmmirror.com/@rollup/rollup-linux-ppc64-musl/-/rollup-linux-ppc64-musl-4.60.2.tgz", - Network accessline 805
"version": "4.60.2", "resolved": "https://registry.npmmirror.com/@rollup/rollup-linux-ppc64-musl/-/rollup-linux-ppc64-musl-4.60.2.tgz", "integrity": "sha512-i16fokAGK46IVZuV8LIIwMdtqhin9hfYkCh8pf8iC3QU3LpwL+1FSFGej+O7l3E/AoknL6D - Network accessline 806
"resolved": "https://registry.npmmirror.com/@rollup/rollup-linux-ppc64-musl/-/rollup-linux-ppc64-musl-4.60.2.tgz", - Network accessline 816
"node_modules/@rollup/rollup-linux-riscv64-gnu": { "version": "4.60.2", "resolved": "https://registry.npmmirror.com/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.60.2.tgz", - Network accessline 817
"version": "4.60.2", "resolved": "https://registry.npmmirror.com/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.60.2.tgz", "integrity": "sha512-49FkKS6RGQoriDSK/6E2GkAsAuU5kETFCh7pG4yD/ylj9rKhTmO3elsnmBvRD4PgJPds5 - Network accessline 818
"resolved": "https://registry.npmmirror.com/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.60.2.tgz", - Network accessline 828
"node_modules/@rollup/rollup-linux-riscv64-musl": { "version": "4.60.2", "resolved": "https://registry.npmmirror.com/@rollup/rollup-linux-riscv64-musl/-/rollup-linux-riscv64-musl-4.60.2.tgz", - Network accessline 829
"version": "4.60.2", "resolved": "https://registry.npmmirror.com/@rollup/rollup-linux-riscv64-musl/-/rollup-linux-riscv64-musl-4.60.2.tgz", "integrity": "sha512-mjYNkHPfGpUR00DuM1ZZIgs64Hpf4bWcz9Z41+4Q+pgDx73UwWdAYyf6EG/lRFldmdH - Network accessline 830
"resolved": "https://registry.npmmirror.com/@rollup/rollup-linux-riscv64-musl/-/rollup-linux-riscv64-musl-4.60.2.tgz", - Network accessline 840
"node_modules/@rollup/rollup-linux-s390x-gnu": { "version": "4.60.2", "resolved": "https://registry.npmmirror.com/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.60.2.tgz", - Network accessline 841
"version": "4.60.2", "resolved": "https://registry.npmmirror.com/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.60.2.tgz", "integrity": "sha512-ALyvJz965BQk8E9Al/JDKKDLH2kfKFLTGMlgkAbbYtZuJt9LU8DW3ZoDMCtQpXAltZxwBHevX - Network accessline 842
"resolved": "https://registry.npmmirror.com/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.60.2.tgz", - Network accessline 852
"node_modules/@rollup/rollup-linux-x64-gnu": { "version": "4.60.2", "resolved": "https://registry.npmmirror.com/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.60.2.tgz", - Network accessline 853
"version": "4.60.2", "resolved": "https://registry.npmmirror.com/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.60.2.tgz", "integrity": "sha512-UQjrkIdWrKI626Du8lCQ6MJp/6V1LAo2bOK9OTu4mSn8GGXIkPXk/Vsp4bLHCd9Z9Iz2OTEaokUE9 - Network accessline 854
"resolved": "https://registry.npmmirror.com/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.60.2.tgz", - Network accessline 864
"node_modules/@rollup/rollup-linux-x64-musl": { "version": "4.60.2", "resolved": "https://registry.npmmirror.com/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.60.2.tgz", - Network accessline 865
"version": "4.60.2", "resolved": "https://registry.npmmirror.com/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.60.2.tgz", "integrity": "sha512-bTsRGj6VlSdn/XD4CGyzMnzaBs9bsRxy79eTqTCBsA8TMIEky7qg48aPkvJvFe1HyzQ5oMZdg7A - Network accessline 866
"resolved": "https://registry.npmmirror.com/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.60.2.tgz", - Network accessline 876
"node_modules/@rollup/rollup-openbsd-x64": { "version": "4.60.2", "resolved": "https://registry.npmmirror.com/@rollup/rollup-openbsd-x64/-/rollup-openbsd-x64-4.60.2.tgz", - Network accessline 877
"version": "4.60.2", "resolved": "https://registry.npmmirror.com/@rollup/rollup-openbsd-x64/-/rollup-openbsd-x64-4.60.2.tgz", "integrity": "sha512-6d4Z3534xitaA1FcMWP7mQPq5zGwBmGbhphh2DwaA1aNIXUu3KTOfwrWpbwI4/Gr0uANo7NTtaykFyO2h - Network accessline 878
"resolved": "https://registry.npmmirror.com/@rollup/rollup-openbsd-x64/-/rollup-openbsd-x64-4.60.2.tgz", - Network accessline 888
"node_modules/@rollup/rollup-openharmony-arm64": { "version": "4.60.2", "resolved": "https://registry.npmmirror.com/@rollup/rollup-openharmony-arm64/-/rollup-openharmony-arm64-4.60.2.tgz", - Network accessline 889
"version": "4.60.2", "resolved": "https://registry.npmmirror.com/@rollup/rollup-openharmony-arm64/-/rollup-openharmony-arm64-4.60.2.tgz", "integrity": "sha512-NetAg5iO2uN7eB8zE5qrZ3CSil+7IJt4WDFLcC75Ymywq1VZVD6qJ6EvNLjZ3rEm6gB7X - Network accessline 890
"resolved": "https://registry.npmmirror.com/@rollup/rollup-openharmony-arm64/-/rollup-openharmony-arm64-4.60.2.tgz", - Network accessline 900
"node_modules/@rollup/rollup-win32-arm64-msvc": { "version": "4.60.2", "resolved": "https://registry.npmmirror.com/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.60.2.tgz", - Network accessline 901
"version": "4.60.2", "resolved": "https://registry.npmmirror.com/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.60.2.tgz", "integrity": "sha512-NCYhOotpgWZ5kdxCZsv6Iudx0wX8980Q/oW4pNFNihpBKsDbEA1zpkfxJGC0yugsUuyDZ7g - Network accessline 902
"resolved": "https://registry.npmmirror.com/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.60.2.tgz", - Network accessline 912
"node_modules/@rollup/rollup-win32-ia32-msvc": { "version": "4.60.2", "resolved": "https://registry.npmmirror.com/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.60.2.tgz", - Network accessline 913
"version": "4.60.2", "resolved": "https://registry.npmmirror.com/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.60.2.tgz", "integrity": "sha512-RXsaOqXxfoUBQoOgvmmijVxJnW2IGB0eoMO7F8FAjaj0UTywUO/luSqimWBJn04WNgUkeNhh7 - Network accessline 914
"resolved": "https://registry.npmmirror.com/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.60.2.tgz", - Network accessline 924
"node_modules/@rollup/rollup-win32-x64-gnu": { "version": "4.60.2", "resolved": "https://registry.npmmirror.com/@rollup/rollup-win32-x64-gnu/-/rollup-win32-x64-gnu-4.60.2.tgz", - Network accessline 925
"version": "4.60.2", "resolved": "https://registry.npmmirror.com/@rollup/rollup-win32-x64-gnu/-/rollup-win32-x64-gnu-4.60.2.tgz", "integrity": "sha512-qdAzEULD+/hzObedtmV6iBpdL5TIbKVztGiK7O3/KYSf+HIzU257+MX1EXJcyIiDbMAqmbwaufcYP - Network accessline 926
"resolved": "https://registry.npmmirror.com/@rollup/rollup-win32-x64-gnu/-/rollup-win32-x64-gnu-4.60.2.tgz", - Network accessline 936
"node_modules/@rollup/rollup-win32-x64-msvc": { "version": "4.60.2", "resolved": "https://registry.npmmirror.com/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.60.2.tgz", - Network accessline 937
"version": "4.60.2", "resolved": "https://registry.npmmirror.com/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.60.2.tgz", "integrity": "sha512-Nd/SgG27WoA9e+/TdK74KnHz852TLa94ovOYySo/yMPuTmpckK/jIF2jSwS3g7ELSKXK13/cVdm - Network accessline 938
"resolved": "https://registry.npmmirror.com/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.60.2.tgz", - Network accessline 948
"node_modules/@types/babel__core": { "version": "7.20.5", "resolved": "https://registry.npmmirror.com/@types/babel__core/-/babel__core-7.20.5.tgz", - Network accessline 949
"version": "7.20.5", "resolved": "https://registry.npmmirror.com/@types/babel__core/-/babel__core-7.20.5.tgz", "integrity": "sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==", - Network accessline 950
"resolved": "https://registry.npmmirror.com/@types/babel__core/-/babel__core-7.20.5.tgz", - Network accessline 960
"node_modules/@types/babel__generator": { "version": "7.27.0", "resolved": "https://registry.npmmirror.com/@types/babel__generator/-/babel__generator-7.27.0.tgz", - Network accessline 961
"version": "7.27.0", "resolved": "https://registry.npmmirror.com/@types/babel__generator/-/babel__generator-7.27.0.tgz", "integrity": "sha512-ufFd2Xi92OAVPYsy+P4n7/U7e68fex0+Ee8gSG9KX7eo084CWiQ4sdxktvdl0bOPupXtVJPY19zk6EwWqUQ8lg - Network accessline 962
"resolved": "https://registry.npmmirror.com/@types/babel__generator/-/babel__generator-7.27.0.tgz", - Network accessline 968
"node_modules/@types/babel__template": { "version": "7.4.4", "resolved": "https://registry.npmmirror.com/@types/babel__template/-/babel__template-7.4.4.tgz", - Network accessline 969
"version": "7.4.4", "resolved": "https://registry.npmmirror.com/@types/babel__template/-/babel__template-7.4.4.tgz", "integrity": "sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A==", - Network accessline 970
"resolved": "https://registry.npmmirror.com/@types/babel__template/-/babel__template-7.4.4.tgz", - Network accessline 977
"node_modules/@types/babel__traverse": { "version": "7.28.0", "resolved": "https://registry.npmmirror.com/@types/babel__traverse/-/babel__traverse-7.28.0.tgz", - Network accessline 978
"version": "7.28.0", "resolved": "https://registry.npmmirror.com/@types/babel__traverse/-/babel__traverse-7.28.0.tgz", "integrity": "sha512-8PvcXf70gTDZBgt9ptxJ8elBeBjcLOAcOtoO/mPJjtji1+CdGbHgm77om1GrsPxsiE+uXIpNSK64UYaIwQXd4Q== - Network accessline 979
"resolved": "https://registry.npmmirror.com/@types/babel__traverse/-/babel__traverse-7.28.0.tgz", - Network accessline 985
"node_modules/@types/estree": { "version": "1.0.8", "resolved": "https://registry.npmmirror.com/@types/estree/-/estree-1.0.8.tgz", - Network accessline 986
"version": "1.0.8", "resolved": "https://registry.npmmirror.com/@types/estree/-/estree-1.0.8.tgz", "integrity": "sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==" - Network accessline 987
"resolved": "https://registry.npmmirror.com/@types/estree/-/estree-1.0.8.tgz", - Network accessline 990
"node_modules/@vitejs/plugin-react": { "version": "4.3.4", "resolved": "https://registry.npmmirror.com/@vitejs/plugin-react/-/plugin-react-4.3.4.tgz", - Network accessline 991
"version": "4.3.4", "resolved": "https://registry.npmmirror.com/@vitejs/plugin-react/-/plugin-react-4.3.4.tgz", "integrity": "sha512-SCCPBJtYLdE8PX/7ZQAs1QAZ8Jqwih+0VBLum1EGqmCCQal+MIUqLCzj3ZUy8ufbC0cAM4LRlSTm7IQJwWT4ug==", - Network accessline 992
"resolved": "https://registry.npmmirror.com/@vitejs/plugin-react/-/plugin-react-4.3.4.tgz", - Network accessline 1008
"node_modules/baseline-browser-mapping": { "version": "2.10.21", "resolved": "https://registry.npmmirror.com/baseline-browser-mapping/-/baseline-browser-mapping-2.10.21.tgz", - Network accessline 1009
"version": "2.10.21", "resolved": "https://registry.npmmirror.com/baseline-browser-mapping/-/baseline-browser-mapping-2.10.21.tgz", "integrity": "sha512-Q+rUQ7Uz8AHM7DEaNdwvfFCTq7a43lNTzuS94eiWqwyxfV/wJv+oUivef51T91mmRY4d4A1u9rc - Network accessline 1010
"resolved": "https://registry.npmmirror.com/baseline-browser-mapping/-/baseline-browser-mapping-2.10.21.tgz", - Network accessline 1019
"node_modules/browserslist": { "version": "4.28.2", "resolved": "https://registry.npmmirror.com/browserslist/-/browserslist-4.28.2.tgz", - Network accessline 1020
"version": "4.28.2", "resolved": "https://registry.npmmirror.com/browserslist/-/browserslist-4.28.2.tgz", "integrity": "sha512-48xSriZYYg+8qXna9kwqjIVzuQxi+KYWp2+5nCYnYKPTr0LvD89Jqk2Or5ogxz0NUMfIjhh2lIUX/LyX9B4oIg==", - Network accessline 1021
"resolved": "https://registry.npmmirror.com/browserslist/-/browserslist-4.28.2.tgz", - Network accessline 1024
{ "type": "opencollective", "url": "https://opencollective.com/browserslist" - Network accessline 1025
"type": "opencollective", "url": "https://opencollective.com/browserslist" }, - Network accessline 1026
"url": "https://opencollective.com/browserslist" - Network accessline 1028
{ "type": "tidelift", "url": "https://tidelift.com/funding/github/npm/browserslist" - Network accessline 1029
"type": "tidelift", "url": "https://tidelift.com/funding/github/npm/browserslist" }, - Network accessline 1030
"url": "https://tidelift.com/funding/github/npm/browserslist" - Network accessline 1032
{ "type": "github", "url": "https://github.com/sponsors/ai" - Network accessline 1033
"type": "github", "url": "https://github.com/sponsors/ai" } - Network accessline 1034
"url": "https://github.com/sponsors/ai" - Network accessline 1051
"node_modules/caniuse-lite": { "version": "1.0.30001790", "resolved": "https://registry.npmmirror.com/caniuse-lite/-/caniuse-lite-1.0.30001790.tgz", - Network accessline 1052
"version": "1.0.30001790", "resolved": "https://registry.npmmirror.com/caniuse-lite/-/caniuse-lite-1.0.30001790.tgz", "integrity": "sha512-bOoxfJPyYo+ds6W0YfptaCWbFnJYjh2Y1Eow5lRv+vI2u8ganPZqNm1JwNh0t2ELQCqIWg4B3dWEusgAmsoyOw==" - Network accessline 1053
"resolved": "https://registry.npmmirror.com/caniuse-lite/-/caniuse-lite-1.0.30001790.tgz", - Network accessline 1056
{ "type": "opencollective", "url": "https://opencollective.com/browserslist" - Network accessline 1057
"type": "opencollective", "url": "https://opencollective.com/browserslist" }, - Network accessline 1058
"url": "https://opencollective.com/browserslist" - Network accessline 1060
{ "type": "tidelift", "url": "https://tidelift.com/funding/github/npm/caniuse-lite" - Network accessline 1061
"type": "tidelift", "url": "https://tidelift.com/funding/github/npm/caniuse-lite" }, - Network accessline 1062
"url": "https://tidelift.com/funding/github/npm/caniuse-lite" - Network accessline 1064
{ "type": "github", "url": "https://github.com/sponsors/ai" - Network accessline 1065
"type": "github", "url": "https://github.com/sponsors/ai" } - Network accessline 1066
"url": "https://github.com/sponsors/ai" - Network accessline 1070
"node_modules/convert-source-map": { "version": "2.0.0", "resolved": "https://registry.npmmirror.com/convert-source-map/-/convert-source-map-2.0.0.tgz", - Network accessline 1071
"version": "2.0.0", "resolved": "https://registry.npmmirror.com/convert-source-map/-/convert-source-map-2.0.0.tgz", "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==" - Network accessline 1072
"resolved": "https://registry.npmmirror.com/convert-source-map/-/convert-source-map-2.0.0.tgz", - Network accessline 1075
"node_modules/debug": { "version": "4.4.3", "resolved": "https://registry.npmmirror.com/debug/-/debug-4.4.3.tgz", - Network accessline 1076
"version": "4.4.3", "resolved": "https://registry.npmmirror.com/debug/-/debug-4.4.3.tgz", "integrity": "sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==", - Network accessline 1077
"resolved": "https://registry.npmmirror.com/debug/-/debug-4.4.3.tgz", - Network accessline 1091
"node_modules/electron-to-chromium": { "version": "1.5.344", "resolved": "https://registry.npmmirror.com/electron-to-chromium/-/electron-to-chromium-1.5.344.tgz", - Network accessline 1092
"version": "1.5.344", "resolved": "https://registry.npmmirror.com/electron-to-chromium/-/electron-to-chromium-1.5.344.tgz", "integrity": "sha512-4MxfbmNDm+KPh066EZy+eUnkcDPcZ35wNmOWzFuh/ijvHsve6kbLTLURy88uCNK5FbpN+yk2nQY6BYh1GEt - Network accessline 1093
"resolved": "https://registry.npmmirror.com/electron-to-chromium/-/electron-to-chromium-1.5.344.tgz", - Network accessline 1096
"node_modules/esbuild": { "version": "0.21.5", "resolved": "https://registry.npmmirror.com/esbuild/-/esbuild-0.21.5.tgz", - Network accessline 1097
"version": "0.21.5", "resolved": "https://registry.npmmirror.com/esbuild/-/esbuild-0.21.5.tgz", "integrity": "sha512-mg3OPMV4hXywwpoDxu3Qda5xCKQi+vCTZq8S9J/EpkhB2HzKXq4SNFZE3+NK93JYxc8VMSep+lOUSC/RVKaBqw==", - Network accessline 1098
"resolved": "https://registry.npmmirror.com/esbuild/-/esbuild-0.21.5.tgz", - Network accessline 1133
"node_modules/escalade": { "version": "3.2.0", "resolved": "https://registry.npmmirror.com/escalade/-/escalade-3.2.0.tgz", - Network accessline 1134
"version": "3.2.0", "resolved": "https://registry.npmmirror.com/escalade/-/escalade-3.2.0.tgz", "integrity": "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==", - Network accessline 1135
"resolved": "https://registry.npmmirror.com/escalade/-/escalade-3.2.0.tgz", - Network accessline 1141
"node_modules/fsevents": { "version": "2.3.3", "resolved": "https://registry.npmmirror.com/fsevents/-/fsevents-2.3.3.tgz", - Network accessline 1142
"version": "2.3.3", "resolved": "https://registry.npmmirror.com/fsevents/-/fsevents-2.3.3.tgz", "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", - Network accessline 1143
"resolved": "https://registry.npmmirror.com/fsevents/-/fsevents-2.3.3.tgz", - Network accessline 1154
"node_modules/gensync": { "version": "1.0.0-beta.2", "resolved": "https://registry.npmmirror.com/gensync/-/gensync-1.0.0-beta.2.tgz", - Network accessline 1155
"version": "1.0.0-beta.2", "resolved": "https://registry.npmmirror.com/gensync/-/gensync-1.0.0-beta.2.tgz", "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", - Network accessline 1156
"resolved": "https://registry.npmmirror.com/gensync/-/gensync-1.0.0-beta.2.tgz", - Network accessline 1162
"node_modules/js-tokens": { "version": "4.0.0", "resolved": "https://registry.npmmirror.com/js-tokens/-/js-tokens-4.0.0.tgz", - Network accessline 1163
"version": "4.0.0", "resolved": "https://registry.npmmirror.com/js-tokens/-/js-tokens-4.0.0.tgz", "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==" - Network accessline 1164
"resolved": "https://registry.npmmirror.com/js-tokens/-/js-tokens-4.0.0.tgz", - Network accessline 1167
"node_modules/jsesc": { "version": "3.1.0", "resolved": "https://registry.npmmirror.com/jsesc/-/jsesc-3.1.0.tgz", - Network accessline 1168
"version": "3.1.0", "resolved": "https://registry.npmmirror.com/jsesc/-/jsesc-3.1.0.tgz", "integrity": "sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA==", - Network accessline 1169
"resolved": "https://registry.npmmirror.com/jsesc/-/jsesc-3.1.0.tgz", - Network accessline 1178
"node_modules/json5": { "version": "2.2.3", "resolved": "https://registry.npmmirror.com/json5/-/json5-2.2.3.tgz", - Network accessline 1179
"version": "2.2.3", "resolved": "https://registry.npmmirror.com/json5/-/json5-2.2.3.tgz", "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", - Network accessline 1180
"resolved": "https://registry.npmmirror.com/json5/-/json5-2.2.3.tgz", - Network accessline 1189
"node_modules/loose-envify": { "version": "1.4.0", "resolved": "https://registry.npmmirror.com/loose-envify/-/loose-envify-1.4.0.tgz", - Network accessline 1190
"version": "1.4.0", "resolved": "https://registry.npmmirror.com/loose-envify/-/loose-envify-1.4.0.tgz", "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", - Network accessline 1191
"resolved": "https://registry.npmmirror.com/loose-envify/-/loose-envify-1.4.0.tgz", - Network accessline 1200
"node_modules/lru-cache": { "version": "5.1.1", "resolved": "https://registry.npmmirror.com/lru-cache/-/lru-cache-5.1.1.tgz", - Network accessline 1201
"version": "5.1.1", "resolved": "https://registry.npmmirror.com/lru-cache/-/lru-cache-5.1.1.tgz", "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", - Network accessline 1202
"resolved": "https://registry.npmmirror.com/lru-cache/-/lru-cache-5.1.1.tgz", - Network accessline 1208
"node_modules/marked": { "version": "12.0.2", "resolved": "https://registry.npmmirror.com/marked/-/marked-12.0.2.tgz", - Network accessline 1209
"version": "12.0.2", "resolved": "https://registry.npmmirror.com/marked/-/marked-12.0.2.tgz", "integrity": "sha512-qXUm7e/YKFoqFPYPa3Ukg9xlI5cyAtGmyEIzMfW//m6kXwCy2Ps9DYf5ioijFKQ8qyuscrHoY04iJGctu2Kg0Q==", - Network accessline 1210
"resolved": "https://registry.npmmirror.com/marked/-/marked-12.0.2.tgz", - Network accessline 1219
"node_modules/ms": { "version": "2.1.3", "resolved": "https://registry.npmmirror.com/ms/-/ms-2.1.3.tgz", - Network accessline 1220
"version": "2.1.3", "resolved": "https://registry.npmmirror.com/ms/-/ms-2.1.3.tgz", "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==" - Network accessline 1221
"resolved": "https://registry.npmmirror.com/ms/-/ms-2.1.3.tgz", - Network accessline 1224
"node_modules/nanoid": { "version": "3.3.11", "resolved": "https://registry.npmmirror.com/nanoid/-/nanoid-3.3.11.tgz", - Network accessline 1225
"version": "3.3.11", "resolved": "https://registry.npmmirror.com/nanoid/-/nanoid-3.3.11.tgz", "integrity": "sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==", - Network accessline 1226
"resolved": "https://registry.npmmirror.com/nanoid/-/nanoid-3.3.11.tgz", - Network accessline 1229
{ "type": "github", "url": "https://github.com/sponsors/ai" - Network accessline 1230
"type": "github", "url": "https://github.com/sponsors/ai" } - Network accessline 1231
"url": "https://github.com/sponsors/ai" - Network accessline 1241
"node_modules/node-releases": { "version": "2.0.38", "resolved": "https://registry.npmmirror.com/node-releases/-/node-releases-2.0.38.tgz", - Network accessline 1242
"version": "2.0.38", "resolved": "https://registry.npmmirror.com/node-releases/-/node-releases-2.0.38.tgz", "integrity": "sha512-3qT/88Y3FbH/Kx4szpQQ4HzUbVrHPKTLVpVocKiLfoYvw9XSGOX2FmD2d6DrXbVYyAQTF2HeF6My8jmzx7/CRw==" - Network accessline 1243
"resolved": "https://registry.npmmirror.com/node-releases/-/node-releases-2.0.38.tgz", - Network accessline 1246
"node_modules/picocolors": { "version": "1.1.1", "resolved": "https://registry.npmmirror.com/picocolors/-/picocolors-1.1.1.tgz", - Network accessline 1247
"version": "1.1.1", "resolved": "https://registry.npmmirror.com/picocolors/-/picocolors-1.1.1.tgz", "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==" - Network accessline 1248
"resolved": "https://registry.npmmirror.com/picocolors/-/picocolors-1.1.1.tgz", - Network accessline 1251
"node_modules/postcss": { "version": "8.5.10", "resolved": "https://registry.npmmirror.com/postcss/-/postcss-8.5.10.tgz", - Network accessline 1252
"version": "8.5.10", "resolved": "https://registry.npmmirror.com/postcss/-/postcss-8.5.10.tgz", "integrity": "sha512-pMMHxBOZKFU6HgAZ4eyGnwXF/EvPGGqUr0MnZ5+99485wwW41kW91A4LOGxSHhgugZmSChL5AlElNdwlNgcnLQ==", - Network accessline 1253
"resolved": "https://registry.npmmirror.com/postcss/-/postcss-8.5.10.tgz", - Network accessline 1256
{ "type": "opencollective", "url": "https://opencollective.com/postcss/" - Network accessline 1257
"type": "opencollective", "url": "https://opencollective.com/postcss/" }, - Network accessline 1258
"url": "https://opencollective.com/postcss/" - Network accessline 1260
{ "type": "tidelift", "url": "https://tidelift.com/funding/github/npm/postcss" - Network accessline 1261
"type": "tidelift", "url": "https://tidelift.com/funding/github/npm/postcss" }, - Network accessline 1262
"url": "https://tidelift.com/funding/github/npm/postcss" - Network accessline 1264
{ "type": "github", "url": "https://github.com/sponsors/ai" - Network accessline 1265
"type": "github", "url": "https://github.com/sponsors/ai" } - Network accessline 1266
"url": "https://github.com/sponsors/ai" - Network accessline 1278
"node_modules/react": { "version": "18.2.0", "resolved": "https://registry.npmmirror.com/react/-/react-18.2.0.tgz", - Network accessline 1279
"version": "18.2.0", "resolved": "https://registry.npmmirror.com/react/-/react-18.2.0.tgz", "integrity": "sha512-/3IjMdb2L9QbBdWiW5e3P2/npwMBaU9mHCSCUzNln0ZCYbcfTsGbTJrU/kGemdH2IWmB2ioZ+zkxtmq6g09fGQ==", - Network accessline 1280
"resolved": "https://registry.npmmirror.com/react/-/react-18.2.0.tgz", - Network accessline 1289
"node_modules/react-dom": { "version": "18.2.0", "resolved": "https://registry.npmmirror.com/react-dom/-/react-dom-18.2.0.tgz", - Network accessline 1290
"version": "18.2.0", "resolved": "https://registry.npmmirror.com/react-dom/-/react-dom-18.2.0.tgz", "integrity": "sha512-6IMTriUmvsjHUjNtEDudZfuDQUoWXVxKHhlEGSk81n4YFS+r/Kl99wXiwlVXtPBtJenozv2P+hxDsw9eA7Xo6g==", - Network accessline 1291
"resolved": "https://registry.npmmirror.com/react-dom/-/react-dom-18.2.0.tgz", - Network accessline 1301
"node_modules/react-refresh": { "version": "0.14.2", "resolved": "https://registry.npmmirror.com/react-refresh/-/react-refresh-0.14.2.tgz", - Network accessline 1302
"version": "0.14.2", "resolved": "https://registry.npmmirror.com/react-refresh/-/react-refresh-0.14.2.tgz", "integrity": "sha512-jCvmsr+1IUSMUyzOkRcvnVbX3ZYC6g9TDrDbFuFmRDq7PD4yaGbLKNQL6k2jnArV8hjYxh7hVhAZB6s9HDGpZA==", - Network accessline 1303
"resolved": "https://registry.npmmirror.com/react-refresh/-/react-refresh-0.14.2.tgz", - Network accessline 1309
"node_modules/rollup": { "version": "4.60.2", "resolved": "https://registry.npmmirror.com/rollup/-/rollup-4.60.2.tgz", - Network accessline 1310
"version": "4.60.2", "resolved": "https://registry.npmmirror.com/rollup/-/rollup-4.60.2.tgz", "integrity": "sha512-J9qZyW++QK/09NyN/zeO0dG/1GdGfyp9lV8ajHnRVLfo/uFsbji5mHnDgn/qYdUHyCkM2N+8VyspgZclfAh0eQ==", - Network accessline 1311
"resolved": "https://registry.npmmirror.com/rollup/-/rollup-4.60.2.tgz", - Network accessline 1352
"node_modules/scheduler": { "version": "0.23.2", "resolved": "https://registry.npmmirror.com/scheduler/-/scheduler-0.23.2.tgz", - Network accessline 1353
"version": "0.23.2", "resolved": "https://registry.npmmirror.com/scheduler/-/scheduler-0.23.2.tgz", "integrity": "sha512-UOShsPwz7NrMUqhR6t0hWjFduvOzbtv7toDH1/hIrfRNIDBnnBWd0CwJTGvTpngVlmwGCdP9/Zl/tVrDqcuYzQ==", - Network accessline 1354
"resolved": "https://registry.npmmirror.com/scheduler/-/scheduler-0.23.2.tgz", - Network accessline 1360
"node_modules/semver": { "version": "6.3.1", "resolved": "https://registry.npmmirror.com/semver/-/semver-6.3.1.tgz", - Network accessline 1361
"version": "6.3.1", "resolved": "https://registry.npmmirror.com/semver/-/semver-6.3.1.tgz", "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", - Network accessline 1362
"resolved": "https://registry.npmmirror.com/semver/-/semver-6.3.1.tgz", - Network accessline 1368
"node_modules/source-map-js": { "version": "1.2.1", "resolved": "https://registry.npmmirror.com/source-map-js/-/source-map-js-1.2.1.tgz", - Network accessline 1369
"version": "1.2.1", "resolved": "https://registry.npmmirror.com/source-map-js/-/source-map-js-1.2.1.tgz", "integrity": "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==", - Network accessline 1370
"resolved": "https://registry.npmmirror.com/source-map-js/-/source-map-js-1.2.1.tgz", - Network accessline 1376
"node_modules/update-browserslist-db": { "version": "1.2.3", "resolved": "https://registry.npmmirror.com/update-browserslist-db/-/update-browserslist-db-1.2.3.tgz", - Network accessline 1377
"version": "1.2.3", "resolved": "https://registry.npmmirror.com/update-browserslist-db/-/update-browserslist-db-1.2.3.tgz", "integrity": "sha512-Js0m9cx+qOgDxo0eMiFGEueWztz+d4+M3rGlmKPT+T4IS/jP4ylw3Nwpu6cpTTP8R1MAC1kF4VbdLt3ARf2 - Network accessline 1378
"resolved": "https://registry.npmmirror.com/update-browserslist-db/-/update-browserslist-db-1.2.3.tgz", - Network accessline 1381
{ "type": "opencollective", "url": "https://opencollective.com/browserslist" - Network accessline 1382
"type": "opencollective", "url": "https://opencollective.com/browserslist" }, - Network accessline 1383
"url": "https://opencollective.com/browserslist" - Network accessline 1385
{ "type": "tidelift", "url": "https://tidelift.com/funding/github/npm/browserslist" - Network accessline 1386
"type": "tidelift", "url": "https://tidelift.com/funding/github/npm/browserslist" }, - Network accessline 1387
"url": "https://tidelift.com/funding/github/npm/browserslist" - Network accessline 1389
{ "type": "github", "url": "https://github.com/sponsors/ai" - Network accessline 1390
"type": "github", "url": "https://github.com/sponsors/ai" } - Network accessline 1391
"url": "https://github.com/sponsors/ai" - Network accessline 1405
"node_modules/vite": { "version": "5.4.21", "resolved": "https://registry.npmmirror.com/vite/-/vite-5.4.21.tgz", - Network accessline 1406
"version": "5.4.21", "resolved": "https://registry.npmmirror.com/vite/-/vite-5.4.21.tgz", "integrity": "sha512-o5a9xKjbtuhY6Bi5S3+HvbRERmouabWbyUcpXXUA1u+GNUKoROi9byOJ8M0nHbHYHkYICiMlqxkg1KkYmm25Sw==", - Network accessline 1407
"resolved": "https://registry.npmmirror.com/vite/-/vite-5.4.21.tgz", - Network accessline 1419
}, "funding": { "url": "https://github.com/vitejs/vite?sponsor=1" - Network accessline 1420
"funding": { "url": "https://github.com/vitejs/vite?sponsor=1" }, - Network accessline 1421
"url": "https://github.com/vitejs/vite?sponsor=1" - Network accessline 1463
"node_modules/yallist": { "version": "3.1.1", "resolved": "https://registry.npmmirror.com/yallist/-/yallist-3.1.1.tgz", - Network accessline 1464
"version": "3.1.1", "resolved": "https://registry.npmmirror.com/yallist/-/yallist-3.1.1.tgz", "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==" - Network accessline 1465
"resolved": "https://registry.npmmirror.com/yallist/-/yallist-3.1.1.tgz",
tools/fupan-workbench/frontend/package.json
- Executable scriptline 1
Executable file
tools/fupan-workbench/frontend/src/main.jsx
tools/fupan-workbench/frontend/vite.config.js
- Executable scriptline 1
Executable file
tools/fupan-workbench/launcher.py
- Executable scriptline 1
Executable file - Executable scriptline 1
Executable file - Network accessline 65
def request_json(url, timeout=1.5): with urllib.request.urlopen(url, timeout=timeout) as response: - Network accessline 65
def request_json(url, timeout=1.5): with urllib.request.urlopen(url, timeout=timeout) as response: - Network accessline 66
with urllib.request.urlopen(url, timeout=timeout) as response: - Network accessline 66
with urllib.request.urlopen(url, timeout=timeout) as response: - Network accessline 77
def find_free_port(start=DEFAULT_PORT, attempts=80): for port in range(start, start + attempts): sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) - Network accessline 77
def find_free_port(start=DEFAULT_PORT, attempts=80): for port in range(start, start + attempts): sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) - Network accessline 78
for port in range(start, start + attempts): sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) try: - Network accessline 78
for port in range(start, start + attempts): sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) try: - Network accessline 79
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) - Network accessline 79
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) - Network accessline 140
port = args.port or find_free_port() url = "http://{}:{}".format(HOST, port) - Network accessline 140
port = args.port or find_free_port() url = "http://{}:{}".format(HOST, port) - Network accessline 141
url = "http://{}:{}".format(HOST, port) - Network accessline 141
url = "http://{}:{}".format(HOST, port)
tools/fupan-workbench/markdown_reader.py
- Executable scriptline 1
Executable file
tools/fupan-workbench/review_index.py
- Executable scriptline 1
Executable file
tools/fupan-workbench/server.py
- Executable scriptline 1
Executable file
tools/fupan-workbench/static/assets/index-DffckMrb.js
- Network accessline 1
var cf=Object.defineProperty;var ho=e=>{throw TypeError(e)};var ff=(e,t,n)=>t in e?cf(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n;var A=(e,t,n)=>ff(e,typeof t!="symbol"?t+"":t,n),df=(e,t,n)=>t.has(e)||ho("Cannot "+n);var - Executable scriptline 1
Executable file - Possible obfuscationline 9
*/var cr=Symbol.for("react.element"),pf=Symbol.for("react.portal"),hf=Symbol.for("react.fragment"),mf=Symbol.for("react.strict_mode"),gf=Symbol.for("react.profiler"),vf=Symbol.for("react.provider"),yf=Symbol.for("react.context"),kf=Symbol.f - Possible obfuscationline 25
*/(function(e){function t(_,z){var P=_.length;_.push(z);e:for(;0<P;){var Y=P-1>>>1,b=_[Y];if(0<l(b,z))_[Y]=z,_[P]=b,P=Y;else break e}}function n(_){return _.length===0?null:_[0]}function r(_){if(_.length===0)return null;var z=_[0],P=_.pop() - Network accessline 31
* This source code is licensed under the MIT license found in the * LICENSE file in the root directory of this source tree. */var Xu=L,Se=If;function w(e){for(var t="https://reactjs.org/docs/error-decoder.html?invariant="+e,n=1;n<argument - Network accessline 32
* LICENSE file in the root directory of this source tree. */var Xu=L,Se=If;function w(e){for(var t="https://reactjs.org/docs/error-decoder.html?invariant="+e,n=1;n<arguments.length;n++)t+="&args[]="+encodeURIComponent(arguments[n]);return" - Network accessline 33
*/var Xu=L,Se=If;function w(e){for(var t="https://reactjs.org/docs/error-decoder.html?invariant="+e,n=1;n<arguments.length;n++)t+="&args[]="+encodeURIComponent(arguments[n]);return"Minified React error #"+e+"; visit "+t+" for the full messa - Possible obfuscationline 33
*/var Xu=L,Se=If;function w(e){for(var t="https://reactjs.org/docs/error-decoder.html?invariant="+e,n=1;n<arguments.length;n++)t+="&args[]="+encodeURIComponent(arguments[n]);return"Minified React error #"+e+"; visit "+t+" for the full messa - Possible obfuscationline 34
`+Kl+e}var Zl=!1;function Yl(e,t){if(!e||Zl)return"";Zl=!0;var n=Error.prepareStackTrace;Error.prepareStackTrace=void 0;try{if(t)if(t=function(){throw Error()},Object.defineProperty(t.prototype,"props",{set:function(){throw Error()}}),typeo - Possible obfuscationline 37
[Credential-related source omitted] - Possible obfuscationline 38
`).replace(Gd,"")}function Pr(e,t,n){if(t=Ko(t),Ko(e)!==t&&n)throw Error(w(425))}function sl(){}var Fi=null,Ai=null;function Ui(e,t){return e==="textarea"||e==="noscript"||typeof t.children=="string"||typeof t.children=="number"||typeof t.d - Possible obfuscationline 39
Error generating stack: `+i.message+ `+i.stack}return{value:e,source:t,stack:l,digest:null}}function pi(e,t,n){return{value:e,source:null,stack:n??null,digest:t??null}}function Xi(e,t){try{console.error(t.value)}catch(n){setTimeout(function - Possible obfuscationline 40
`+i.stack}return{value:e,source:t,stack:l,digest:null}}function pi(e,t,n){return{value:e,source:null,stack:n??null,digest:t??null}}function Xi(e,t){try{console.error(t.value)}catch(n){setTimeout(function(){throw n})}}var dp=typeof WeakMap== - Possible obfuscationline 41
`).map(l=>{const i=l.match(/^\s+/);if(i===null)return l;const[s]=i;return s.length>=r.length?l.slice(r.length):l}).join( `)}class Sl{constructor(t){A(this,"options");A(this,"rules");A(this,"lexer");this.options=t||Bt}space(t){const n=this.r - Possible obfuscationline 52
`,t=t.substring(S.length+1),g=h.slice(v)}}i.loose||(c?i.loose=!0:/\n *\n *$/.test(o)&&(c=!0));let x=null,T;this.options.gfm&&(x=/^\[[ xX]\] /.exec(u),x&&(T=x[0]!=="[ ] ",u=u.replace(/^\[[ xX]\] +/,""))),i.items.push({type:"list_item",raw:o, - Possible obfuscationline 54
`?n[1].slice(0,-1):n[1];return{type:"paragraph",raw:n[0],text:r,tokens:this.lexer.inline(r)}}}text(t){const n=this.rules.block.text.exec(t);if(n)return{type:"text",raw:n[0],text:n[0],tokens:this.lexer.inline(n[0])}}escape(t){const n=this.ru - Possible obfuscationline 55
]`).replace("lheading",ef).replace("|table","").replace("blockquote"," {0,3}>").replace("|fences","").replace("|list","").replace("|html","").replace("|tag","").getRegex()},nf=/^\\([!"#$%&'()*+,\-./:;<=>?@\[\]\\^_`{|}~])/,rh=/^(`+)([^`]|[^` - Possible obfuscationline 56
`),this.blockTokens(t,this.tokens);for(let n=0;n<this.inlineQueue.length;n++){const r=this.inlineQueue[n];this.inlineTokens(r.src,r.tokens)}return this.inlineQueue=[],this.tokens}blockTokens(t,n=[]){this.options.pedantic?t=t.replace(/\t/g," - Possible obfuscationline 65
`+r.text,this.inlineQueue.pop(),this.inlineQueue[this.inlineQueue.length-1].src=l.text):n.push(r);continue}if(t){const o="Infinite loop on byte: "+t.charCodeAt(0);if(this.options.silent){console.error(o);break}else throw new Error(o)}}retur - Possible obfuscationline 83
`}strong(t){return`<strong>${t}</strong>`}em(t){return`<em>${t}</em>`}codespan(t){return`<code>${t}</code>`}br(){return"<br>"}del(t){return`<del>${t}</del>`}link(t,n,r){const l=Cu(t);if(l===null)return r;t=l;let i='<a href="'+t+'"';return n - Possible obfuscationline 84
`+(s.tokens?this.parseInline(s.tokens):s.text);r+=n?this.renderer.paragraph(o):o;continue}default:{const s='Token with "'+i.type+'" type was not found.';if(this.options.silent)return console.error(s),"";throw new Error(s)}}}return r}parseIn - Network accessline 85
Please report this to https://github.com/markedjs/marked.`,t){const l="<p>An error occurred:</p><pre>"+ke(r.message+"",!0)+"</pre>";return n?Promise.resolve(l):l}if(n)return Promise.reject(r);throw r}};const Dt=new yh;function O(e,t){return - Possible obfuscationline 85
Please report this to https://github.com/markedjs/marked.`,t){const l="<p>An error occurred:</p><pre>"+ke(r.message+"",!0)+"</pre>";return n?Promise.resolve(l):l}if(n)return Promise.reject(r);throw r}};const Dt=new yh;function O(e,t){return - Possible obfuscationline 87
`},n.image=(l,i,s)=>{if(!l)return"";const o=Ar(l),u=Ar(s||"复盘图片"),c=i?` title="${Ar(i)}"`:"";return`<button type="button" class="markdown-image-button" data-zoom-src="${o}" data-zoom-alt="${u}" aria-label="放大图片:${u}"><img src="${o}" alt="${
tools/fupan-workbench/task_store.py
tools/fupan-workbench/tests/test_review_index.py
- Executable scriptline 1
Executable file
tools/fupan-workbench/tests/test_task_store.py
- Executable scriptline 1
Executable file
updatemd/claude-md/2026-04-18-R8-R9-R10-新增规则.md
- Network accessline 28
新增路由 → curl 验证。改 proxy → curl 验证。创建 worktree → diff .env。改后端 → 重启 + curl health。
updatemd/forge-bugfix/2026-04-18-v3.1-多Bug分诊+标签化日志+5Whys链+Bug分类+防护措施.md
- Network accessline 28
| 领域 | 关键发现 | 来源 | |------|----------|------| | Bug 分类学 | Boris Beizer 8 类 + Ishikawa 6M 映射到软件 | [124Tech](https://www.124tech.com/blog/ishikawa-software-engineering/)、[MeasuringU](https://measuringu.com/frameworks-for-classifying-ui-proble - Network accessline 29
|------|----------|------| | Bug 分类学 | Boris Beizer 8 类 + Ishikawa 6M 映射到软件 | [124Tech](https://www.124tech.com/blog/ishikawa-software-engineering/)、[MeasuringU](https://measuringu.com/frameworks-for-classifying-ui-problems/) | | 多 Bug 分诊 | - Network accessline 30
| Bug 分类学 | Boris Beizer 8 类 + Ishikawa 6M 映射到软件 | [124Tech](https://www.124tech.com/blog/ishikawa-software-engineering/)、[MeasuringU](https://measuringu.com/frameworks-for-classifying-ui-problems/) | - Network accessline 31
| 多 Bug 分诊 | Atlassian/Plane.so 3 轴评估:用户影响 × 耦合度 × 信息依赖 | [Plane.so](https://plane.so/blog/bug-triage-process-how-to-run-it-and-what-to-prioritize) | - Network accessline 32
| 根因沟通 | 5 Whys + Fishbone 组合,用「用户可见」术语而非代码术语 | [GoLeanSixSigma](https://goleansixsigma.com/fishbone-diagram/)、[Stanford IT](https://stanford.service-now.com/it_services?id=kb_article&number=KB00016564) | - Network accessline 33
| 标签化调试 | `[DEBUG H1]` 假设标签日志,日志→假设可追溯 | [franzenzenhofer/debug-mode-skill](https://github.com/franzenzenhofer/debug-mode-skill)、[doraemonkeys/claude-code-debug-mode](https://github.com/doraemonkeys/claude-code-debug-mode) | - Network accessline 34
| 回归预防 | 三层防护:回归测试 + lint 规则 + 架构改进 | [BairesDev](https://www.bairesdev.com/blog/classifying-prioritizing-bugs/)、[Zencoder](https://zencoder.ai/blog/software-engineering-best-practices) | - Network accessline 35
| AI 调试 Agent | Claude Code / Cursor / Codex / Aider / franzenzenhofer 对比 | [eesel AI](https://www.eesel.ai/blog/debug-with-claude-code)、[SitePoint](https://www.sitepoint.com/debugging-ai-claude-code-vs-traditional-methods/) |
updatemd/forge-eng/2026-04-18-影响面扫描+环境验证.md
- Network accessline 10
从 54 篇复盘中发现两类高频 bug: 1. **下游依赖未追踪**(8+ 次):新增/修改字段后,消费该字段的下游组件未同步更新。典型案例:pill 过滤后计数不联动、前端覆盖后端排序、枚举新增未全局搜索。 2. **环境/运行时未验证**(7+ 次):worktree 缺 .env、Vite proxy 端口错、路由未 curl 验证、进程 CWD 不匹配。 - Network accessline 12
2. **环境/运行时未验证**(7+ 次):worktree 缺 .env、Vite proxy 端口错、路由未 curl 验证、进程 CWD 不匹配。 - Network accessline 18
Worktree 创建后、编码前,强制通过 4 项检查: - .env 完整性(diff 主仓库) - 后端启动(curl health) - Network accessline 19
[Credential-related source omitted] - Access to secretsline 19
[Credential-related source omitted] - Network accessline 20
- 后端启动(curl health) - Network accessline 21
- 前端启动(curl localhost) - Network accessline 22
- 代理配置(curl 通过代理的 API 路径) - Network accessline 34
所有 Wave 完成后: - 新增 API 路由 curl 验证 - Network accessline 35
- 新增 API 路由 curl 验证
updatemd/forge-qa/2026-04-19-Mode-B单bug验收.md
How the signals fit together
Facts from a static read of the files at the pinned commit. They describe what the code does, not why.
Some files could not be read; the facts below still hold.
Declared and executed: 4 facts
- Allows Bash without restrictions, though it has no scripts or shell blocksforge-bugfix/SKILL.md:7High confidence
- Contacts api.openai.com, which SKILL.md, the README and the plugin manifest do not mentionskills/_shared/generate_image2.py:102High confidence
- Contacts fonts.googleapis.com, which SKILL.md, the README and the plugin manifest do not mentionforge-design-lab/scripts/scaffold_pack.py:119High confidence
- Contacts fonts.gstatic.com, which SKILL.md, the README and the plugin manifest do not mentionforge-design-lab/scripts/scaffold_pack.py:119High confidence
Signal confidence: 362 facts
- Network access in prose of documentationCHANGELOG.md:3Low confidence
- Access to secrets in prose of documentationCHANGELOG.md:176Low confidence
- Network access in prose of documentationREADME.md:10Low confidence
- Network access in prose of documentationREADME.md:11Low confidence
- Network access in prose of documentationREADME.md:12Low confidence
- Network access in prose of documentationREADME.md:13Low confidence
- Network access in prose of documentationREADME.md:131Low confidence
- Network access in prose of documentationREADME.md:133Low confidence
- Network access in code of documentationREADME.md:309Low confidence
- Network access in code of documentationREADME.md:310Low confidence
- Network access in prose of documentationREADME.md:331Low confidence
- Network access in prose of documentationREADME.md:436Low confidence
- Broad permissions in the frontmatter of the SKILL.md2026-07-04-forge-deliver-retired/SKILL.md:1High confidence
- Network access in prose of documentation_archive/document-driven-dev-guide-original.md:343Low confidence
- Access to secrets in prose of documentation_archive/snapshots/2026-09-20-design-lab/visual-decision-layer.md:76Low confidence
- Executable script in code of a file that runs_archive/snapshots/2026-09-20-design-lab/workbench-original/tokens_build.py:1High confidence
- Executable script in a comment of a file that runs_archive/snapshots/2026-09-20-design-lab/workbench-original/workbench.js:1Low confidence
- Broad permissions in the frontmatter of the SKILL.mdforge-bugfix/SKILL.md:1High confidence
- Network access in prose of the SKILL.mdforge-design-lab/SKILL.md:58Low confidence
- Network access in prose of the SKILL.mdforge-design-lab/SKILL.md:59Low confidence
- Broad permissions in the frontmatter of the SKILL.mdforge-review/SKILL.md:1High confidence
- Broad permissions in the frontmatter of the SKILL.mdforge-ship/SKILL.md:1High confidence
- Executable script in code of a file that runsforge-design/scripts/core.py:1High confidence
- Executable script in code of a file that runsforge-design/scripts/design_system.py:1High confidence
- Executable script in code of a file that runsforge-design/scripts/search.py:1High confidence
- Network access in prose of documentation_archive/使用手册.md:452Low confidence
- Network access in prose of documentation_archive/复盘/2026-03-22-文档驱动开发Skill生态构建.md:68Low confidence
- Network access in prose of documentation_archive/复盘/2026-03-22-文档驱动开发Skill生态构建.md:69Low confidence
- Network access in prose of documentation_archive/复盘/2026-03-22-文档驱动开发Skill生态构建.md:70Low confidence
- Network access in prose of documentation_archive/复盘/2026-03-22-文档驱动开发Skill生态构建.md:155Low confidence
- Network access in prose of documentation_archive/复盘/2026-03-22-文档驱动开发Skill生态构建.md:156Low confidence
- Network access in prose of documentation_archive/复盘/2026-03-22-文档驱动开发Skill生态构建.md:157Low confidence
- Network access in prose of documentation_archive/复盘/2026-03-22-文档驱动开发Skill生态构建.md:244Low confidence
- Network access in prose of documentation_archive/复盘/2026-03-22-文档驱动开发Skill生态构建.md:245Low confidence
- Network access in prose of documentation_archive/复盘/2026-03-22-文档驱动开发Skill生态构建.md:246Low confidence
- Network access in prose of documentation_archive/复盘/2026-03-22-文档驱动开发Skill生态构建.md:248Low confidence
- Access to secrets in prose of documentation_archive/复盘/2026-03-22-文档驱动开发Skill生态构建.md:279Low confidence
- Network access in prose of documentationdocs/ENGINEERING-CHANGELOG.md:82Low confidence
- Network access in prose of documentationdocs/ENGINEERING-CHANGELOG.md:83Low confidence
- Network access in prose of documentationdocs/ENGINEERING-CHANGELOG.md:84Low confidence
- Network access in code of documentationdocs/QA.md:129Low confidence
- Network access in code of documentationdocs/QA.md:135Low confidence
- Network access in code of documentationdocs/QA.md:136Low confidence
- Network access in code of documentationdocs/QA.md:137Low confidence
- Network access in prose of documentationdocs/QA.md:144Low confidence
- Network access in code of documentationdocs/archive/forge-qa-v3-research.md:172Low confidence
- Network access in code of documentationdocs/archive/forge-qa-v3-research.md:173Low confidence
- Network access in code of documentationdocs/archive/forge-qa-v3-research.md:174Low confidence
- Network access in prose of documentationdocs/archive/forge-qa-v3-research.md:603Low confidence
- Network access in prose of documentationdocs/archive/forge-qa-v3-research.md:604Low confidence
and 312 more
Works with
| Agent | Status | Evidence | Install to |
|---|---|---|---|
| Claude Code | Compatible | Standard SKILL.md SKILL.md | .claude/skills/<skill-name>/ |
| Codex | Compatible | Standard SKILL.md SKILL.md | .agents/skills/<skill-name>/ |
| Cursor | Compatible | Standard SKILL.md SKILL.md | .cursor/skills/<skill-name>/ |
| Gemini CLI | Compatible | Standard SKILL.md SKILL.md | .gemini/skills/<skill-name>/ |
| GitHub Copilot | Compatible | Standard SKILL.md SKILL.md | .github/skills/<skill-name>/ |
| OpenCode | Compatible | Standard SKILL.md SKILL.md | .opencode/skills/<skill-name>/ |
- Native The repository ships a manifest, folder or frontmatter field for this agent.
- Compatible A standard SKILL.md that this agent can read.
- Unknown No evidence either way.
Derived automatically from paths, manifests and frontmatter. Not tested on each agent.