Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
168 commits
Select commit Hold shift + click to select a range
ca0fd0e
Split docs-review into interactive + CI entry points and shared core
CamSoper Apr 22, 2026
0942e54
Add domain skeletons (shared/docs/blog/infra/programs) and update-review
CamSoper Apr 22, 2026
18a4aa1
Add pinned-comment.sh to manage Claude review as a single logical post
CamSoper Apr 22, 2026
10e302e
Add triage workflow, prompt, and labels documentation
CamSoper Apr 22, 2026
abdfe14
Update claude-code-review.yml for the new pipeline shape
CamSoper Apr 22, 2026
7ac1d1e
Update claude.yml to invoke update-review on PRs with a pinned review
CamSoper Apr 22, 2026
9a9ec16
Add draft-first guidance and PR-lifecycle docs for AI contributors
CamSoper Apr 22, 2026
a03875f
Relocate fact-check.md to _common for shared use
CamSoper Apr 23, 2026
32a6dca
Fill review-shared.md with universal review criteria
CamSoper Apr 23, 2026
ef92354
Fill review-docs.md with technical-docs criteria
CamSoper Apr 23, 2026
1b8c4b3
Fill review-blog.md with blog/marketing criteria
CamSoper Apr 23, 2026
6930b1e
Fill review-infra.md and review-programs.md criteria
CamSoper Apr 23, 2026
de5ea54
Extend fact-check.md with v1 additions
CamSoper Apr 23, 2026
7891507
Tighten update-review.md with Sonnet-specific rules and draft note
CamSoper Apr 23, 2026
723916c
Append Session 2 notes to SESSION-NOTES
CamSoper Apr 23, 2026
036f918
Fix high-severity pipeline bugs from review pass
CamSoper Apr 23, 2026
2c7268c
Tighten rubric language in domain and fact-check files
CamSoper Apr 23, 2026
09a5885
Add defense-in-depth guardrails
CamSoper Apr 23, 2026
fbbead7
Fix hardcoded pulumi/docs in workflow write-access checks
CamSoper Apr 23, 2026
0ad5a5e
Drop 'x' flag from pinned-comment.sh capture regex
CamSoper Apr 23, 2026
083505d
Add in-progress / done UX signal around Claude review runs
CamSoper Apr 23, 2026
4487ed9
Chain initial review to triage via workflow_run
CamSoper Apr 23, 2026
2eb81a3
Emphasize status row and add dispute guidance to the review tagline
CamSoper Apr 23, 2026
a38e925
Fix Resolve PR context: user β†’ author, drop unused headRefOid
CamSoper Apr 23, 2026
7c3afbc
Path-precedence ordering on domain selection
CamSoper Apr 23, 2026
83cdc6f
Make triage delta computation explicit
CamSoper Apr 23, 2026
f3927ff
Append Session 3 notes
CamSoper Apr 23, 2026
82d1354
Workflow prompt: emphasize the removal step in triage delta
CamSoper Apr 23, 2026
094cbd7
Replace claude-code-action with direct Anthropic API + shell delta
CamSoper Apr 23, 2026
8e688d0
pinned-comment.sh: strip inbound CLAUDE_REVIEW markers before split
CamSoper Apr 23, 2026
d390c8d
Append Session 3 continuation notes
CamSoper Apr 23, 2026
6f71a3c
Triage: skip drafts until marked ready for review
CamSoper Apr 24, 2026
5e1c359
Triage: add prose-check on trivial PRs (advisory comment, label still…
CamSoper Apr 27, 2026
5497d62
Phase A: progress lifecycle, check-run, customers→case-studies, emoji
CamSoper Apr 27, 2026
fa79e61
Phase B: model-driven @claude routing, claude-stale removal, cancella…
CamSoper Apr 27, 2026
f21e3d2
update-review: annotate disputed-and-held findings inline (#12)
CamSoper Apr 27, 2026
30b3909
update-review: weight author authority in dispute resolution (#13)
CamSoper Apr 27, 2026
ff8289f
Append Session 4 notes
CamSoper Apr 27, 2026
7e5d79d
Session 4 notes: flag fork-only github-actions[bot] attribution as ex…
CamSoper Apr 27, 2026
8bb9e1a
Triage: apply review:prose-flagged label when prose concerns surface
CamSoper Apr 27, 2026
fc91aec
Session 5 notes: pipeline comparison + cost-optimization backlog
CamSoper Apr 28, 2026
1107dce
Cost-opt: broaden allowed-tools + pre-compute PR metadata
CamSoper Apr 28, 2026
0f15282
Cost-opt polish: add gh pr checks, cd, absolute pinned-comment.sh path
CamSoper Apr 28, 2026
cdcfc15
Cost-opt: extend re-entrant flow's allowed-tools symmetrically
CamSoper Apr 28, 2026
f477191
Trim Session 6 backlog: drop fact-check cap, diff trim, Sonnet-for-in…
CamSoper Apr 28, 2026
0ef196d
Triage classifier: deterministic shell-side classification helper
CamSoper Apr 28, 2026
a182f02
Triage: move classification to deterministic shell, add review:frontm…
CamSoper Apr 28, 2026
4a34329
Triage classifier: smarter frontmatter detection + link-set diff
CamSoper Apr 28, 2026
56f9af1
Session 7 notes: triage classifier refactor + frontmatter-only short-…
CamSoper Apr 28, 2026
e9bd53c
Refactor review skills into modern docs-review/ package
CamSoper Apr 29, 2026
f6cbbfb
Update review-skill content for new layout
CamSoper Apr 29, 2026
0541177
Extract code-examples, prose-patterns, image-review references
CamSoper Apr 29, 2026
a096563
Restore audit gaps: cross-domain, publishing checklist, blog editorial
CamSoper Apr 29, 2026
47a12e1
Session 8 notes: audit + extraction + restoration
CamSoper Apr 29, 2026
df2b017
Add publishing-readiness frontmatter checks for blog posts
CamSoper Apr 29, 2026
0edac66
Add checkMoreBreak: flag missing or buried <!--more--> in blog posts
CamSoper Apr 29, 2026
6ceb043
Close cache-friendliness audit as no-op
CamSoper Apr 29, 2026
6f70147
Restate deploy step as a labels script for the post-merge bootstrap
CamSoper Apr 29, 2026
c356723
Drop PR 45 prose-regression item β€” addressed orthogonally by Session 8
CamSoper Apr 29, 2026
737d3cd
Replicate feasible SEO/AEO criteria into blog and docs review
CamSoper Apr 29, 2026
59fb801
Record R52/R54 as calculated drops and note residual items for hand r…
CamSoper Apr 29, 2026
9991112
Reword reference loadout from sequential to concurrent
CamSoper Apr 29, 2026
81dae2c
Drop runtime-irrelevant version commentary from docs-review/ci.md
CamSoper Apr 29, 2026
2b21a62
Remove Re-entrant runs section from docs-review/ci.md
CamSoper Apr 29, 2026
b397dce
Sweep docs-review skill files for meta-commentary and DRY violations
CamSoper Apr 29, 2026
076de8a
Sweep pr-review skill files for meta-commentary and DRY violations
CamSoper Apr 29, 2026
be71b89
Rewrite pr-review SKILL: read CI's pinned review as source of truth
CamSoper Apr 29, 2026
27e1588
Standardize cross-file references to skill:reference notation
CamSoper Apr 29, 2026
1464bd9
Session 9 notes: pr-review SKILL rewrite + sweeps + notation pass
CamSoper Apr 29, 2026
51b6a6b
Drop unread labels, rename domain prefix, fix ci.md Β§3 fiction
CamSoper Apr 29, 2026
ca894cb
Session 10 notes: drop unread labels, rename domain prefix
CamSoper Apr 29, 2026
3a81802
Add R31 missing-canonical-cross-link rule to docs and blog
CamSoper Apr 29, 2026
a8c99ca
Bump prose-patterns cap from 5 to 10 per file
CamSoper Apr 29, 2026
03a7e95
Switch triage-prose model to Haiku and harden prompt
CamSoper Apr 29, 2026
3061498
Flag UK spellings and missing Oxford commas in triage-prose
CamSoper Apr 29, 2026
aa9720d
Move post-run label apply from agent prompt to workflow step
CamSoper Apr 29, 2026
7222742
Drop gh pr edit from claude-code-review agent allowlist
CamSoper Apr 29, 2026
511b792
Trim blog.md Priority 1 claim list β€” fact-check.md owns extraction
CamSoper Apr 29, 2026
0a35be3
Backtick-wrap <link> placeholder in blog.md weak-conclusions example
CamSoper Apr 29, 2026
2d98467
Replace blog publishing-readiness checklist with publishing blockers
CamSoper Apr 29, 2026
7d8dfa9
Restructure docs.md by priority and surface fact-check at Priority 1
CamSoper Apr 29, 2026
d006b15
Audit fact-check.md: drop caller-leak, output-format dup, and bloat
CamSoper Apr 29, 2026
e485bf7
Refine CI documentation: simplify early exit condition and remove unn…
CamSoper Apr 29, 2026
535140f
Session 11 notes: caller-leak sweep, Haiku triage, label-apply lift
CamSoper Apr 29, 2026
8894b5b
Clarify SEO rules in documentation: streamline language for better un…
CamSoper Apr 29, 2026
808358d
Refactor documentation: streamline language, clarify procedures, and …
CamSoper Apr 29, 2026
156f924
Refine documentation: clarify output format caps, enhance specificity…
CamSoper Apr 29, 2026
578d677
Refine documentation: enhance clarity and specificity across various …
CamSoper Apr 30, 2026
d9ff5a8
Add Session 12 notes: document skill-file audit process, findings, an…
CamSoper Apr 30, 2026
e0bc27b
Add label-deploy script for the canonical PR-triage taxonomy
CamSoper Apr 30, 2026
d838e58
Elevate prose patterns to a numbered priority; unify spelling/grammar…
CamSoper Apr 30, 2026
350740d
Add Session 14 notes: label deploy, spelling/grammar extraction, pros…
CamSoper Apr 30, 2026
1ce2529
Trim caller-leak and stale references from fact-check.md
CamSoper Apr 30, 2026
479e5e4
Refine documentation review criteria and output formatting across mul…
CamSoper Apr 30, 2026
b88460a
Move deterministic frontmatter checks out of pre-commit lint into PR …
CamSoper Apr 30, 2026
698e24a
Revert this branch's lint-markdown changes; cover gaps in blog review
CamSoper Apr 30, 2026
a80f49f
Append Session 14 continuation: caller-leak audit and lint round-trip
CamSoper Apr 30, 2026
36234a2
Restore pinned-comment.sh reference and tighten cross-refs in output-…
CamSoper Apr 30, 2026
214dd5c
Append Session 15 notes: residual-backlog cleanup
CamSoper Apr 30, 2026
d7c76dd
Stop self-loop on Claude Code re-entrant workflow
CamSoper Apr 30, 2026
113955e
Tighten fact-check social-block sweep and re-entrant duplicate-occurr…
CamSoper Apr 30, 2026
875c380
Update triage classification criteria and enhance documentation for A…
CamSoper Apr 30, 2026
93dbfb6
Add Session 17 notes: e2e re-test findings, trivial-threshold bump, a…
CamSoper Apr 30, 2026
7ecf44f
Switch trivial cap from adds+dels to additions only
CamSoper Apr 30, 2026
0b8e9a0
Fix four issues surfaced by the Session-18 e2e run
CamSoper Apr 30, 2026
c27b3d7
Append Session 18 notes: e2e re-test, trivial-cap rethink, four clean…
CamSoper Apr 30, 2026
2b8332e
Add note on PR experience and label behavior for pipeline improvements
CamSoper Apr 30, 2026
43f5b8f
Refine local review instructions and clarify action menu usage in PR …
CamSoper Apr 30, 2026
1d3c155
Add notes on PR label behavior and propose a lighter version of /docs…
CamSoper Apr 30, 2026
42b8c71
Clarify documentation drift criteria and update examples for flagging…
CamSoper May 1, 2026
85f85b8
Add domain:website and tighten trivial/fmonly to docs+blog only
CamSoper May 1, 2026
2aa77bf
Document Session 19 findings, including live vs legacy benchmark resu…
CamSoper May 1, 2026
aefa15c
Document Session 20 findings, including design decisions for hashtag-…
CamSoper May 1, 2026
6e5cf91
Add Vale prose linting: make target, CI integration, triage augmentation
CamSoper May 4, 2026
6924b51
Add hashtag-driven @claude routing and bundled Vale follow-ups
CamSoper May 4, 2026
0b402a5
Document Session 22: hashtag routing implementation, Vale follow-ups,…
CamSoper May 4, 2026
52356f4
Fix #new-review dispatcher: use PULUMI_BOT_TOKEN to avoid bot-actor r…
CamSoper May 4, 2026
f495156
Drop review:claude-working from labels.json (Session 22 cleanup)
CamSoper May 4, 2026
6d19d63
Document Session 23: end-to-end fork battery (11 PASS / 1 deferred); …
CamSoper May 4, 2026
b144f04
Session 23 backlog: prune to 4 items (3 Vale UX follow-ups + quick /d…
CamSoper May 4, 2026
f3dcc85
Session 24: PR-text Vale UX polish (category rename, per-file roll-up…
CamSoper May 4, 2026
6bc9256
Session 25: @claude workflow message UX polish (spinner on initial re…
CamSoper May 4, 2026
7aa64e3
Document Sessions 24 + 25: Vale UX polish, @claude workflow polish, l…
CamSoper May 4, 2026
c8f79fd
Session 26: Fix Vale-checkout race on three trigger paths
CamSoper May 4, 2026
7491cb9
Style findings: add H4 sub-heading + bold filename in roll-up summary
CamSoper May 4, 2026
079b985
Polish Style findings render: 'issues' over 'nits', bold all numerals…
CamSoper May 4, 2026
af41a18
Document Session 26: Vale-checkout fix on three trigger paths + Style…
CamSoper May 4, 2026
fb611b4
Reflow hard-wrapped paragraphs in claude-code-review.yml prompt block
CamSoper May 4, 2026
5e090c9
S26 addendum: hard-wrap reflow + Session 27 sketches
CamSoper May 5, 2026
5bcc51a
S27 Sketch A: Clean up #new-review's stale "regenerating" comment
CamSoper May 5, 2026
34cc369
S27 bucket-criteria tightenings: always-🚨 carve-outs + two-question test
CamSoper May 5, 2026
1e17b9b
Clarify comment on spelling/grammar/style check in claude-triage.yml
CamSoper May 5, 2026
c081363
Update spelling/grammar/style check message for clarity
CamSoper May 5, 2026
094d61c
Clarify language in output format documentation for pre-existing issu…
CamSoper May 5, 2026
c36c70b
S29 v3 output format: goal preamble, verification trail, editorial ba…
CamSoper May 5, 2026
a49158c
S29 polish: format readability + style render mode
CamSoper May 5, 2026
bc32958
S30 fact-check: cited-claim spot-check (close PR #130 1/3 gap)
CamSoper May 5, 2026
c939009
S30 output-format: promote mandatory-sections rule to top-level invar…
CamSoper May 5, 2026
f343a57
S30 prose-patterns + output-format: AI-drafting signals detector
CamSoper May 5, 2026
ff1143d
S30 output-format: investigation log surfaces null decisions
CamSoper May 5, 2026
9dd46bb
S30 Change 1.1: force source-quote into cited-claim verdicts
CamSoper May 5, 2026
abc7582
S30 Change 1.1 polish: trim wordy context out of cited-claim section
CamSoper May 5, 2026
7ca5cd3
Document Sessions 27-30: bucket-criteria β†’ v3 output format β†’ S30 closes
CamSoper May 5, 2026
0d42702
S31 Change 1: decompose claim extraction into 4 parallel subagents
CamSoper May 6, 2026
f9f846e
S31 Change 2: decompose AI-drafting-signals into structural + lexical…
CamSoper May 6, 2026
8d2a3ec
S31 Change 3: parallelize cross-sibling reads as digest subagents
CamSoper May 6, 2026
f49ba46
S31 codify: Β§Subagent decomposition primitive in output-format.md
CamSoper May 6, 2026
3f76391
S31 polish: categorical specialist names; drop high/low extraction-co…
CamSoper May 6, 2026
f6fc670
S31 polish: inline fresh-review-only guards at each dispatch site
CamSoper May 6, 2026
40e1880
S31 docs: SESSION-NOTES Β§Session 31 entry
CamSoper May 6, 2026
7a94468
S32 cleanup: move SESSION-NOTES + FORK-PREP into battery scratch
CamSoper May 6, 2026
46b25c8
S32 Change 1: bucket-promotion driven by trail verdict; anti-hedge fo…
CamSoper May 6, 2026
9e5d76a
S32 Change 2: WebFetch permissive default; "unverifiable" is not the …
CamSoper May 6, 2026
0f3c3ef
S32 Change 3: bucket bullets MUST start with [L<start>-<end>] trail-r…
CamSoper May 6, 2026
861df77
S32 Change 4: relax style-findings inline-vs-collapse threshold for l…
CamSoper May 6, 2026
aa1b0d7
S32 Change 5: validate-pinned.py + upsert-validated wrapper + ci.md rule
CamSoper May 6, 2026
369491f
S32 Change 6: decompose code-examples into 4 parallel specialists per…
CamSoper May 6, 2026
9b3e5e9
S33 Change 1: collapse code-examples specialists 4 -> 2 by reasoning …
CamSoper May 6, 2026
c51c750
S33 Change 2: two-pass fact-check verification; validator schema v1 -…
CamSoper May 6, 2026
d889a2d
S33 Change 3: validator fail-loud on External claim verification form…
CamSoper May 6, 2026
43840a4
S33 Change 4: route verification by source class; eliminate wasted Pa…
CamSoper May 6, 2026
0132e60
S33 Change 5: tighten cross-sibling sibling-read dispatch β€” uniform d…
CamSoper May 7, 2026
515055a
S34 working session: schema v4, post-run telemetry, surface fixes
CamSoper May 7, 2026
3968be5
S34 telemetry: upload raw execution log only; parser is operator-side
CamSoper May 7, 2026
a661943
S35 Ship 6: PR-add-aware internal-link-existence
CamSoper May 7, 2026
d5eb7cd
S35 Ship 1: drop AI-drafting section, route tells through Vale rules
CamSoper May 7, 2026
fad0f93
Add necessity guidelines for image review criteria
CamSoper May 7, 2026
42831ae
S35 Ship 4: Haiku surgical-fix between validator pass 1 and soft-floor
CamSoper May 7, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
174 changes: 0 additions & 174 deletions .claude/commands/_common/review-criteria.md

This file was deleted.

125 changes: 0 additions & 125 deletions .claude/commands/docs-review.md

This file was deleted.

53 changes: 53 additions & 0 deletions .claude/commands/docs-review/SKILL.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,53 @@
---
name: docs-review
description: Review docs and blog post quality before committing (style, accuracy, Pulumi best practices). Use when you've made content changes locally and want a quality pass on open files, the current branch, or a specific PR β€” outputs to the conversation, never posts to GitHub.
user-invocable: true
---

# Docs Review (interactive)

Output goes into the conversation. This skill never posts to GitHub.

## Usage

`/docs-review [PR_NUMBER]`

If `PR_NUMBER` is provided, review the PR via `gh pr view` / `gh pr diff`. If omitted, auto-detect scope from the current IDE/terminal context.

## Scope detection (when no PR number is provided)

Walk these steps in order; stop at the first that yields a scope.

1. **Open files in the IDE.** Check the conversation context for system reminders that list open files. If any are present, treat those files as the scope.
2. **Uncommitted changes.** Check the gitStatus block (or run `git status`) for modified (`M`) and untracked (`??`) files. Use `git diff` and read the affected files.
3. **Branch changes vs. master:**

```bash
git diff $(git merge-base --fork-point master HEAD)...HEAD
```

If `--fork-point` fails (no reflog), fall back to `git diff $(git merge-base master HEAD)...HEAD`. Review every changed file in the branch.

## Performing the review

Route each file to a domain via `docs-review:references:domain-routing`, then apply that domain's criteria plus `docs-review:references:shared-criteria`. Render the output per `docs-review:references:output-format`.

For files under `content/docs/` or `content/blog/`, also run Vale and surface its findings under ⚠️ Low-confidence as `[style] <category> β€” <message>` per the render contract in `docs-review:references:output-format`. Pipe through the categorize filter so the JSON has a deterministic `category` field β€” never surface the raw rule name:

```bash
vale --no-exit --output=JSON <files> > /tmp/vale-raw.json
python3 .claude/commands/docs-review/scripts/vale-findings-filter.py \
--in /tmp/vale-raw.json --out /tmp/vale-findings.json
# Render bullets from /tmp/vale-findings.json: use .category, not .rule.
```

Omit `--pr` in interactive mode (no diff to intersect; the filter accepts all findings, categorizes, caps). If `vale --version` fails or `vale` is not on PATH, skip the Vale step with a one-line note (e.g., "Skipping Vale: not installed. Install via `mise install` to enable style nits.") and continue the review without Vale findings β€” don't hard-fail.

For PR-number invocations:

```bash
gh pr view {{arg}} --json title,body,files,additions,deletions,labels
gh pr diff {{arg}}
```

Format for terminal display. Include the scope in the summary, and offer to broaden if useful.
Loading
Loading