Skip to content

Commit bc62a32

Browse files
docs(dotfiles): route plan worktree init through git-spice, fix uv audit and rust test example
The release-refresh plan's Execution Model still initialized feature work with `gh stack init`, bypassing the repo's git-spice-only branch/PR policy even after the git-helper skill routing fix. Point worktree init, stack-layer splitting, and the publish checklist item at git-spice instead. python-helper recommended `uv audit` as an interchangeable alternative to `pip-audit`, but `uv audit` is preview-gated (`--preview`) and absent entirely in older uv releases (confirmed: uv 0.7.22 has no `audit` subcommand). Lead with `pip-audit`, which works regardless of uv version. rust-helper's error/assertion example issued a real request to `https://example.com`, making any copied test depend on DNS and an external service. Replaced with a local `wiremock` mock server so the example is deterministic, matching the repo's own network-test principles. Also re-verified the five shipped Research ledgers by live-checking all 202 linked URLs (curl -L): all return HTTP 200, closing the reproducibility gap flagged against the prior evidence claim. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01R6nGikhfrT79nwfg2msWgw
1 parent 40280f1 commit bc62a32

3 files changed

Lines changed: 30 additions & 9 deletions

File tree

packages/docs/plans/2026-08-03_agent-skills-release-refresh.md

Lines changed: 13 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -49,8 +49,9 @@ skill's 30-source set rather than treated as independent 30-source units.
4949

5050
## Execution Model
5151

52-
- Create an isolated worktree from `origin/main` and initialize it as a native
53-
GitHub stack with `gh stack init --base main`.
52+
- Create an isolated worktree from `origin/main` and register it as a git-spice
53+
stack with `git-spice branch track feature/agent-skills-refresh --base main`
54+
(see `git-spice-helper`).
5455
- Divide the corpus into disjoint research batches and rotate three concurrent
5556
subagents through them. Research agents must use Lightpanda first for page
5657
extraction, then `curl`/`wget`, and PinchTab only for blocked or interactive
@@ -63,8 +64,8 @@ skill's 30-source set rather than treated as independent 30-source units.
6364
- Edit skills only after the relevant 30-source threshold is met. Preserve
6465
durable workflows; replace release catalogs with concise current behavior and
6566
migration guidance.
66-
- Split the final change into cohesive native-stack layers by technology group
67-
if the diff is too large for one reviewable PR.
67+
- Split the final change into cohesive git-spice stack layers by technology
68+
group if the diff is too large for one reviewable PR.
6869

6970
## Proposed Research Batches
7071

@@ -114,7 +115,7 @@ skill's 30-source set rather than treated as independent 30-source units.
114115
- [ ] Refresh existing skills and add justified missing skills.
115116
- [ ] Validate links, skill structure, focused checks, docs, and chezmoi drift.
116117
- [ ] Forward-test representative skills with clean-context agents.
117-
- [ ] Publish the reviewable native GitHub stack with source and verification
118+
- [ ] Publish the reviewable git-spice stack with source and verification
118119
evidence.
119120

120121
## Comment Log
@@ -130,6 +131,13 @@ skill's 30-source set rather than treated as independent 30-source units.
130131
project-primary pages, 201 total, were successfully fetched and inspected. The first
131132
five skills were rewritten as concise routing entrypoints with focused
132133
references and source ledgers; the skill validator passes for all five.
134+
- 2026-08-04: Re-verified the five shipped Research ledgers (`git-helper`,
135+
`bun-runtime-best-practices`, `typescript-helper`, `rust-helper`,
136+
`python-helper`) by extracting all linked URLs and live-checking each with
137+
`curl -L --max-time 15`: 202 unique URLs, 202 returned HTTP 200, 0 dead
138+
links. This closes the reproducibility gap in the prior entry — a later
139+
reviewer can now confirm every listed source resolves, independent of the
140+
fetch-method/date detail the Execution Model no longer requires per entry.
133141

134142
## Session Log — 2026-08-03
135143

packages/dotfiles/dot_agents/skills/python-helper/SKILL.md

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -152,7 +152,10 @@ Choose mypy or Pyright from the repository's existing configuration, plugin need
152152
- Pass subprocess argument sequences; avoid `shell=True` with untrusted input.
153153
- Never unpickle untrusted data.
154154
- Keep tarfile's safer `data` filter and inspect untrusted archives even on Python 3.14.
155-
- Audit with `uv audit` or `pip-audit`, not nonexistent `pip audit` / `uv pip audit` commands.
155+
- Audit with `pip-audit` (via `uvx pip-audit`), not the nonexistent `pip audit` /
156+
`uv pip audit` commands. `uv audit` remains a preview-only subcommand (behind
157+
`--preview`) and is absent entirely in older uv releases, so don't rely on it
158+
as a stable, version-independent option.
156159
- Fail on missing required environment configuration; do not silently switch databases.
157160
- Prefer trusted publishing and pinned container artifacts over static tokens and `latest` tags.
158161
- Open text files with an explicit encoding while Python 3.14 remains platform-sensitive by default.

packages/dotfiles/dot_agents/skills/rust-helper/SKILL.md

Lines changed: 13 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -105,13 +105,23 @@ Propagate errors when a test or helper can return `Result`. Assert the actual va
105105

106106
```rust
107107
#[tokio::test]
108-
async fn fetches_non_empty_body() -> Result<(), reqwest::Error> {
109-
let body = fetch_data("https://example.com").await?;
110-
assert!(!body.is_empty());
108+
async fn fetches_expected_body() -> Result<(), reqwest::Error> {
109+
let server = wiremock::MockServer::start().await;
110+
wiremock::Mock::given(wiremock::matchers::method("GET"))
111+
.respond_with(wiremock::ResponseTemplate::new(200).set_body_string("ok"))
112+
.mount(&server)
113+
.await;
114+
115+
let body = fetch_data(&server.uri()).await?;
116+
assert_eq!(body, "ok");
111117
Ok(())
112118
}
113119
```
114120

121+
Use a local mock server (`wiremock`) or injected transport, not a live third-party
122+
endpoint — a real request makes the suite depend on DNS, outbound-network
123+
availability, and an external response.
124+
115125
Check cleanup and writer errors when they can change the outcome. Do not ignore `Read`, `Write`, database close, trace write, or process exit errors.
116126

117127
## Ownership and borrowing

0 commit comments

Comments
 (0)