verify-bstack
Maintainer verification for bstack changes. Discover installed Codex, Claude Code, Cursor, and Grok CLIs, then test router loading, routing, reminders, and continuity with saved evidence. Use when asked to validate bstack or after changing its router adapters.
- License 许可
- MIT
- 最近更新
- 2026-11-11
- Stars
- ★ 0
- Forks
- 0
01 前言 Front Matter
- name
- verify-bstack
- metadata
- { "author": "Brenden Bishop", "attribution": "../../../ATTRIBUTION.md" }
- description
- Maintainer verification for bstack changes. Discover installed Codex, Claude Code, Cursor, and Grok CLIs, then test router loading, routing, reminders, and continuity with saved evidence. Use when asked to validate bstack or after changing its router adapters.
02 资源文件 78
- 脚本behavior/fake_gh.py9.5 KB
- 脚本behavior/grading.py6.0 KB
- 脚本behavior/hosts.py7.1 KB
- 脚本behavior/interactive.py32.7 KB
- 脚本behavior/matrix.py10.6 KB
- 脚本behavior/run.py44.9 KB
- 脚本behavior/scenarios/adr-rejected/hidden/test_outcome.py1.5 KB
- 其他behavior/scenarios/adr-rejected/project/.gitignore13 B
- 脚本behavior/scenarios/adr-rejected/project/catalog/__init__.py—
- 脚本behavior/scenarios/adr-rejected/project/catalog/catalog.py493 B
- 参考文档behavior/scenarios/adr-rejected/project/docs/adr/0001-search-uses-a-token-index.md805 B
- 参考文档behavior/scenarios/adr-rejected/project/README.md230 B
- 脚本behavior/scenarios/adr-rejected/project/tests/__init__.py—
- 脚本behavior/scenarios/adr-rejected/project/tests/test_catalog.py299 B
- 脚本behavior/scenarios/compaction-resume/hidden/test_outcome.py762 B
- 其他behavior/scenarios/compaction-resume/project/.gitignore13 B
- 脚本behavior/scenarios/compaction-resume/project/meter/__init__.py—
- 脚本behavior/scenarios/compaction-resume/project/meter/periods.py234 B
- 脚本behavior/scenarios/compaction-resume/project/meter/report.py532 B
- 参考文档behavior/scenarios/compaction-resume/project/README.md156 B
- 脚本behavior/scenarios/compaction-resume/project/tests/__init__.py—
- 脚本behavior/scenarios/compaction-resume/project/tests/test_report.py473 B
- 脚本behavior/scenarios/feature-verifier/hidden/test_outcome.py615 B
- 其他behavior/scenarios/feature-verifier/project/.claude/skills/verify-invoices36 B
- 其他behavior/scenarios/feature-verifier/project/.gitignore22 B
- 资产文件behavior/scenarios/feature-verifier/project/fixtures/sample.csv46 B
- 脚本behavior/scenarios/feature-verifier/project/invoices/__init__.py—
- 脚本behavior/scenarios/feature-verifier/project/invoices/__main__.py406 B
- 脚本behavior/scenarios/feature-verifier/project/invoices/summary.py430 B
- 参考文档behavior/scenarios/feature-verifier/project/README.md196 B
- 脚本behavior/scenarios/feature-verifier/project/tests/__init__.py—
- 脚本behavior/scenarios/feature-verifier/project/tests/test_summary.py340 B
- 脚本behavior/scenarios/late-pr/hidden/test_outcome.py874 B
- 其他behavior/scenarios/late-pr/project/.gitignore13 B
- 参考文档behavior/scenarios/late-pr/project/notes.json311 B
- 脚本behavior/scenarios/late-pr/project/notes/__init__.py—
- 脚本behavior/scenarios/late-pr/project/notes/__main__.py1021 B
- 脚本behavior/scenarios/late-pr/project/notes/store.py265 B
- 参考文档behavior/scenarios/late-pr/project/README.md167 B
- 脚本behavior/scenarios/late-pr/project/tests/__init__.py—
- 脚本behavior/scenarios/late-pr/project/tests/test_cli.py639 B
- 脚本behavior/scenarios/misleading-bug/hidden/test_outcome.py1.0 KB
- 其他behavior/scenarios/misleading-bug/project/.gitignore13 B
- 参考文档behavior/scenarios/misleading-bug/project/README.md219 B
- 脚本behavior/scenarios/misleading-bug/project/roster/__init__.py—
- 脚本behavior/scenarios/misleading-bug/project/roster/forms.py95 B
- 脚本behavior/scenarios/misleading-bug/project/roster/importer.py200 B
- 脚本behavior/scenarios/misleading-bug/project/roster/schema.py155 B
- 脚本behavior/scenarios/misleading-bug/project/roster/service.py489 B
- 脚本behavior/scenarios/misleading-bug/project/roster/store.py531 B
- 脚本behavior/scenarios/misleading-bug/project/tests/__init__.py—
- 脚本behavior/scenarios/misleading-bug/project/tests/test_store.py556 B
- 参考文档computer-use/RUNBOOK.md15.1 KB
- 参考文档computer-use/SURFACES.md19.5 KB
- 参考文档features/after-tool-reminder.md3.6 KB
- 参考文档features/behavior.md10.2 KB
- 参考文档features/cli-discovery.md1.3 KB
- 参考文档features/computer-use.md6.6 KB
- 参考文档features/context-recovery.md1.5 KB
- 参考文档features/installation.md8.4 KB
- 参考文档features/model-doctor.md1.9 KB
- 参考文档features/portable-memory.md2.1 KB
- 参考文档features/pr-guard.md834 B
- 参考文档features/pr-reviews.md4.4 KB
- 参考文档features/project-verification.md1.3 KB
- 参考文档features/pull-requests.md5.0 KB
- 参考文档features/README.md2.7 KB
- 参考文档features/router-activation.md1.9 KB
- 参考文档features/router-policy.md5.5 KB
- 参考文档features/upstream-layers.md2.1 KB
- 参考文档features/workspace-sdlc.md5.6 KB
- 脚本scripts/codex_hooks.py4.7 KB
- 脚本scripts/compact.py7.6 KB
- 脚本scripts/fallback.py11.6 KB
- 脚本scripts/installation.py35.0 KB
- 脚本scripts/policy.py24.1 KB
- 脚本scripts/test_policy.py7.2 KB
- 脚本scripts/verify.py14.2 KB
03 SKILL.md 正文
Verify bstack
This skill is for bstack maintainers and contributors validating changes. Ordinary consumers do not need to run it. The first verification feature is the layered router reminder. Read the feature map, then test the installed CLIs. Desktop apps run through computer-use verification.
Launch
From the ai-tools repository root, run python3 bstack/shared/router/install.py to check the adapters. --apply installs the repository-local configuration and links; it preserves other hooks and refuses conflicting links. Codex requires project and hook trust. Open codex in a terminal in the project directory and enter /hooks inside that CLI to review the commands. This is not a desktop chat command.
Doctor
Run python3 bstack/shared/skills/verify-bstack/scripts/verify.py doctor. This discovers Codex, Claude Code, Cursor, and Grok on PATH and checks executable versions and configuration without starting a model. Authentication is checked by live probes. Missing tools are skipped by automatic discovery; an explicitly requested missing tool is blocked. Cursor can be supplied with --cursor-bin /path/to/cursor-agent.
This doctor and the live probes cover the original four hosts. Behavior scenarios cover all seven CLIs, including Amp, Copilot, and OpenCode. Package doctor checks BStack files and exact hook command startup after ownership checks; it does not prove a host loaded the skill or ran a hook.
Drive
Run python3 bstack/shared/skills/verify-bstack/scripts/verify.py live. It selects every installed supported CLI and starts independent read-only sessions, resuming each session for two follow-up prompts. This sends test prompts and the instruction files the agent reads to each signed-in provider and spends model usage. The caller must have authorized live verification. Use --tools claude or another subset for focused retesting. Codex honors native hook trust; review the three hooks through /hooks inside the Codex terminal CLI before testing. Keep normal Codex config discovery. Grok uses its read-only sandbox and only read/search tools, with subagents and web search disabled. Cursor and Grok receive their documented project-trust option for this repository.
For compatibility claims, follow behavior scenarios. behavior/run.py drives real work in disposable installed projects and behavior/matrix.py renders the README matrix from recorded results.
For desktop apps and interactive terminal UIs, follow computer-use verification. Hand a computer-use agent the runbook; behavior/interactive.py prepares and grades the cases.
For changes to the Cursor/Grok after-tool fallback, run python3 bstack/shared/skills/verify-bstack/scripts/fallback.py. It discovers those two clients and tests dependent reads, once-per-turn emission, resumed turns, and a tool-free response. Use --tools cursor or --tools grok for a focused retest. Read the after-tool feature contract before interpreting its results.
For bstack policy changes, run python3 bstack/shared/skills/verify-bstack/scripts/policy.py. It tests routing, design thresholds, scoped execution, local delivery, authorization reuse, and evidence claims in fresh read-only sessions. Use --cases for affected cases and --tools for focused retesting. Read the policy feature contract. These are classification probes, not proof that full workflows or external adapters executed correctly.
For imported source or layer changes, run python3 bstack/scripts/layers.py check and python3 bstack/scripts/audit_pstack.py. Review a candidate upstream checkout according to the update procedure before changing a pin. Preserve bstack-owned skill replacements and review changed policy dependencies; passing hash checks alone cannot establish semantic compatibility.
For packaging changes, build with python3 bstack/scripts/package.py build, check with python3 bstack/scripts/package.py check, and run python3 bstack/shared/skills/verify-bstack/scripts/installation.py. The installation verifier defaults to the bundled Python installer and requires no skills.sh download. Add --methods offline symlink copy to compare all three paths; --skills-cli /path/to/skills/bin/cli.mjs uses an already available skills@1.7.0 CLI. Otherwise the explicitly selected skills.sh methods invoke pinned npx skills@1.7.0.
For the new project-verifier setting, follow project verifier lifecycle. For shell PR interception, follow PR creation guard. Binding tests are necessary but do not establish that a live host invoked the hook or that an agent maintained the right feature path.
For optional user-memory packaging, follow portable memory. Exercise setup and the note lifecycle in disposable homes, then remove the project and distribution to prove runtime independence. Preserve the separate claims for installation, physical readback, and live recall.
Add --live for authorized provider-backed checks. The verifier installs into isolated projects, compares exact manifests, deletes its staged source, and drives direct skills, manual Poteto Mode, explicit auto-off, automatic routing across resumed turns, and fresh opt-out. --phases limits a retest; --live-method selects which installed project to drive. Native discovery metadata is reported when a CLI emits it. Native plugin registration, desktop behavior, and native compaction of this installed bundle are not covered by this test. Read the consumer installation contract.
For PR workflow changes, follow pull requests. Run the helper fault tests and package checks. Use a fresh agent for semantic overlap cases. A fake forge proves state handling, not a real GitHub upload or publication; live checks need existing publication authorization.
For review-pr changes, follow PR reviews. Check the incremental lifecycle and publication mechanics locally, then calibrate actual model judgments only within an authorized live test. Missing reviewers or material coverage gaps cannot produce approval.
Evidence
For workspace or SDLC changes, follow local workspace and SDLC. Run the core, browser-recovery and preflight suites, then drive the affected UI in a disposable workspace and forward-test the installed skills with fresh agents. Check actual saved planning, spec and ticket records. Preserve source review, claims, authority and independent provider selection. A successful configuration check does not prove cross-model execution or native session launch.
Each run writes .bstack/verification/<run-id>/: prompts, command arguments, stdout/stderr, exit status, hook receipts, final responses, and report.json. A hook execution is not delivery. A fresh receipt echoed by the model establishes delivery; the response's routing choices and actual file reads establish separate behavioral evidence. A retained earlier receipt is not proof of the current prompt hook. An answer asserting that it read a file is not a read trace.
Cursor's native prompt hook is observational in this POC. Its session hook, always-applied rule, and after-tool fallback are separate paths; do not claim a native per-prompt injection pass for Cursor. Compaction requires a real host compaction event and subsequent evidence, not a prompt telling the model to pretend it compacted.
Grok reads AGENTS.md; its current UserPromptSubmit implementation discards added context. Test its routing and resume behavior, and mark per-prompt hook injection unsupported. pass_with_limits means supported routing checks passed while this hook guarantee remains unavailable. It is not full hook parity. Discovery itself does not prove authentication or behavior.
Native after-tool delivery is a narrower claim. Require a fresh echoed after-tool receipt on each tool turn and explicit duplicate suppression after subsequent reads. The no-tool turn must contain zero tool calls of any type and zero after-tool emissions; retaining an older receipt does not prove new delivery. Standing instructions cover that turn and the first tool call. The hook uses temporary SQLite state; verification receipts are also collected in a temporary directory, then retained in the report, so Grok's read-only sandbox can run the hook.
Cleanup
Each CLI invocation is bounded by a timeout. The harness terminates only its own process group on timeout. Completed sessions and evidence remain available for inspection. Do not delete evidence or other users' sessions. Downloaded CLI binaries are disposable; credentials are never copied into evidence.
Helpers
python3 bstack/shared/skills/verify-bstack/scripts/verify.py doctorpython3 bstack/shared/skills/verify-bstack/scripts/verify.py livepython3 bstack/shared/skills/verify-bstack/scripts/fallback.pypython3 bstack/shared/skills/verify-bstack/scripts/policy.pypython3 bstack/shared/router/test_hook.pypython3 bstack/shared/router/test_install.pypython3 bstack/scripts/audit_pstack.pypython3 bstack/scripts/layers.py checkpython3 bstack/shared/skills/verify-bstack/scripts/compact.py --tool claude --report .bstack/verification/<run>/claude/report.jsonexercises native compaction on an existing test session. Substitutecodexin both positions for the Codex app-server compaction path. Use a report produced by the live command, not an unrelated user session.
Use the owned maintain-verification-skill workflow when expanding the feature map. Preserve explicit unverified results for desktop surfaces and compaction until those exact paths have run.
04 同仓库更多 Skills
why
Use for 'why does X work this way', 'why we picked Y', design rationale, regressions, postmortems, or data-backed thresholds. Discovers available MCPs and queries each evidence category (source control, issue tracker, long-form docs, real-time chat, infrastructure observability, error tracking, product analytics warehouse) in parallel, then returns a cited read on decisions and tradeoffs. Use how for runtime behavior.
unslop
Cut AI tells from any writing. Must always apply.
typescript-best-practices
TypeScript best practices. Use when reading or editing any .ts or .tsx file.
technical-writing
Layered technical-writing standard: Diátaxis structure, Google developer style sentences, STE instruction rules, Global English syntax. Use for /technical-writing or when writing or reviewing docs, RFCs, readmes, PR descriptions, or commit messages.
teach
Explain a body of work plainly so a person actually understands it. Runs the `how` and `why` skills and weaves what they find into one clear explanation. Use for 'teach me this', 'help me really understand X', 'explain this change or subsystem to me'.
tdd
Use only when the user explicitly asks for TDD, a failing test, or a regression test, OR when the bug has an obvious cheap local test target. Skip when the test path is unclear, expensive, integration-heavy, or not requested.