Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
194 commits
Select commit Hold shift + click to select a range
2c289aa
Split docs-review into interactive + CI entry points and shared core
CamSoper Apr 22, 2026
10b742d
Add domain skeletons (shared/docs/blog/infra/programs) and update-review
CamSoper Apr 22, 2026
559426f
Add pinned-comment.sh to manage Claude review as a single logical post
CamSoper Apr 22, 2026
45d5ff1
Add triage workflow, prompt, and labels documentation
CamSoper Apr 22, 2026
c2c28c1
Update claude-code-review.yml for the new pipeline shape
CamSoper Apr 22, 2026
2e8e13c
Update claude.yml to invoke update-review on PRs with a pinned review
CamSoper Apr 22, 2026
11de398
Add draft-first guidance and PR-lifecycle docs for AI contributors
CamSoper Apr 22, 2026
577ed8d
Relocate fact-check.md to _common for shared use
CamSoper Apr 23, 2026
797ca2c
Fill review-shared.md with universal review criteria
CamSoper Apr 23, 2026
4ab185f
Fill review-docs.md with technical-docs criteria
CamSoper Apr 23, 2026
f9ff818
Fill review-blog.md with blog/marketing criteria
CamSoper Apr 23, 2026
d7a13e8
Fill review-infra.md and review-programs.md criteria
CamSoper Apr 23, 2026
3343c22
Extend fact-check.md with v1 additions
CamSoper Apr 23, 2026
0fcc897
Tighten update-review.md with Sonnet-specific rules and draft note
CamSoper Apr 23, 2026
cb5602b
Append Session 2 notes to SESSION-NOTES
CamSoper Apr 23, 2026
9a7535c
Fix high-severity pipeline bugs from review pass
CamSoper Apr 23, 2026
c607acc
Tighten rubric language in domain and fact-check files
CamSoper Apr 23, 2026
66e1670
Add defense-in-depth guardrails
CamSoper Apr 23, 2026
f32d1d1
Fix hardcoded pulumi/docs in workflow write-access checks
CamSoper Apr 23, 2026
cc791bd
Drop 'x' flag from pinned-comment.sh capture regex
CamSoper Apr 23, 2026
e7f35bb
Add in-progress / done UX signal around Claude review runs
CamSoper Apr 23, 2026
a99e881
Chain initial review to triage via workflow_run
CamSoper Apr 23, 2026
0084c80
Emphasize status row and add dispute guidance to the review tagline
CamSoper Apr 23, 2026
e5d1b0c
Fix Resolve PR context: user β†’ author, drop unused headRefOid
CamSoper Apr 23, 2026
e64fc16
Path-precedence ordering on domain selection
CamSoper Apr 23, 2026
50d2667
Make triage delta computation explicit
CamSoper Apr 23, 2026
891270d
Append Session 3 notes
CamSoper Apr 23, 2026
f0f6c25
Workflow prompt: emphasize the removal step in triage delta
CamSoper Apr 23, 2026
637a7c4
Replace claude-code-action with direct Anthropic API + shell delta
CamSoper Apr 23, 2026
fc9f302
pinned-comment.sh: strip inbound CLAUDE_REVIEW markers before split
CamSoper Apr 23, 2026
c092fa6
Append Session 3 continuation notes
CamSoper Apr 23, 2026
4f20b07
Triage: skip drafts until marked ready for review
CamSoper Apr 24, 2026
64375d5
Triage: add prose-check on trivial PRs (advisory comment, label still…
CamSoper Apr 27, 2026
966ec94
Phase A: progress lifecycle, check-run, customers→case-studies, emoji
CamSoper Apr 27, 2026
0da2c54
Phase B: model-driven @claude routing, claude-stale removal, cancella…
CamSoper Apr 27, 2026
8b70240
update-review: annotate disputed-and-held findings inline (#12)
CamSoper Apr 27, 2026
20735cc
update-review: weight author authority in dispute resolution (#13)
CamSoper Apr 27, 2026
9a08fab
Append Session 4 notes
CamSoper Apr 27, 2026
fc9bdbe
Session 4 notes: flag fork-only github-actions[bot] attribution as ex…
CamSoper Apr 27, 2026
c10d852
Triage: apply review:prose-flagged label when prose concerns surface
CamSoper Apr 27, 2026
6deef24
Session 5 notes: pipeline comparison + cost-optimization backlog
CamSoper Apr 28, 2026
4e36ee8
Cost-opt: broaden allowed-tools + pre-compute PR metadata
CamSoper Apr 28, 2026
ca11971
Cost-opt polish: add gh pr checks, cd, absolute pinned-comment.sh path
CamSoper Apr 28, 2026
0baed57
Cost-opt: extend re-entrant flow's allowed-tools symmetrically
CamSoper Apr 28, 2026
28082f8
Trim Session 6 backlog: drop fact-check cap, diff trim, Sonnet-for-in…
CamSoper Apr 28, 2026
d0afa12
Triage classifier: deterministic shell-side classification helper
CamSoper Apr 28, 2026
5bf6e65
Triage: move classification to deterministic shell, add review:frontm…
CamSoper Apr 28, 2026
e72f7f5
Triage classifier: smarter frontmatter detection + link-set diff
CamSoper Apr 28, 2026
8b72290
Session 7 notes: triage classifier refactor + frontmatter-only short-…
CamSoper Apr 28, 2026
07d6e8c
Refactor review skills into modern docs-review/ package
CamSoper Apr 29, 2026
b2c52d1
Update review-skill content for new layout
CamSoper Apr 29, 2026
32bea8b
Extract code-examples, prose-patterns, image-review references
CamSoper Apr 29, 2026
96d2dcd
Restore audit gaps: cross-domain, publishing checklist, blog editorial
CamSoper Apr 29, 2026
33cbd59
Session 8 notes: audit + extraction + restoration
CamSoper Apr 29, 2026
0477049
Add publishing-readiness frontmatter checks for blog posts
CamSoper Apr 29, 2026
0b01d13
Add checkMoreBreak: flag missing or buried <!--more--> in blog posts
CamSoper Apr 29, 2026
06fc57e
Close cache-friendliness audit as no-op
CamSoper Apr 29, 2026
6591d3a
Restate deploy step as a labels script for the post-merge bootstrap
CamSoper Apr 29, 2026
c66d250
Drop PR 45 prose-regression item β€” addressed orthogonally by Session 8
CamSoper Apr 29, 2026
4d003ab
Replicate feasible SEO/AEO criteria into blog and docs review
CamSoper Apr 29, 2026
7d08070
Record R52/R54 as calculated drops and note residual items for hand r…
CamSoper Apr 29, 2026
51d6361
Reword reference loadout from sequential to concurrent
CamSoper Apr 29, 2026
f0fb536
Drop runtime-irrelevant version commentary from docs-review/ci.md
CamSoper Apr 29, 2026
cbb0f19
Remove Re-entrant runs section from docs-review/ci.md
CamSoper Apr 29, 2026
3cac2a4
Sweep docs-review skill files for meta-commentary and DRY violations
CamSoper Apr 29, 2026
8457162
Sweep pr-review skill files for meta-commentary and DRY violations
CamSoper Apr 29, 2026
59e18fa
Rewrite pr-review SKILL: read CI's pinned review as source of truth
CamSoper Apr 29, 2026
f9dfbea
Standardize cross-file references to skill:reference notation
CamSoper Apr 29, 2026
57d4734
Session 9 notes: pr-review SKILL rewrite + sweeps + notation pass
CamSoper Apr 29, 2026
1e9a061
Drop unread labels, rename domain prefix, fix ci.md Β§3 fiction
CamSoper Apr 29, 2026
3b2ebd1
Session 10 notes: drop unread labels, rename domain prefix
CamSoper Apr 29, 2026
3bbeb74
Add R31 missing-canonical-cross-link rule to docs and blog
CamSoper Apr 29, 2026
dd83b68
Bump prose-patterns cap from 5 to 10 per file
CamSoper Apr 29, 2026
b7768ed
Switch triage-prose model to Haiku and harden prompt
CamSoper Apr 29, 2026
51784e5
Flag UK spellings and missing Oxford commas in triage-prose
CamSoper Apr 29, 2026
1925b58
Move post-run label apply from agent prompt to workflow step
CamSoper Apr 29, 2026
2312ecd
Drop gh pr edit from claude-code-review agent allowlist
CamSoper Apr 29, 2026
97fa209
Trim blog.md Priority 1 claim list β€” fact-check.md owns extraction
CamSoper Apr 29, 2026
2e0f56d
Backtick-wrap <link> placeholder in blog.md weak-conclusions example
CamSoper Apr 29, 2026
c661cac
Replace blog publishing-readiness checklist with publishing blockers
CamSoper Apr 29, 2026
e299f92
Restructure docs.md by priority and surface fact-check at Priority 1
CamSoper Apr 29, 2026
3854951
Audit fact-check.md: drop caller-leak, output-format dup, and bloat
CamSoper Apr 29, 2026
b333e0a
Refine CI documentation: simplify early exit condition and remove unn…
CamSoper Apr 29, 2026
6a09208
Session 11 notes: caller-leak sweep, Haiku triage, label-apply lift
CamSoper Apr 29, 2026
0662f87
Clarify SEO rules in documentation: streamline language for better un…
CamSoper Apr 29, 2026
fd041f8
Refactor documentation: streamline language, clarify procedures, and …
CamSoper Apr 29, 2026
1b23187
Refine documentation: clarify output format caps, enhance specificity…
CamSoper Apr 29, 2026
651c6de
Refine documentation: enhance clarity and specificity across various …
CamSoper Apr 30, 2026
d152dfd
Add Session 12 notes: document skill-file audit process, findings, an…
CamSoper Apr 30, 2026
b43ae99
Add label-deploy script for the canonical PR-triage taxonomy
CamSoper Apr 30, 2026
7757979
Elevate prose patterns to a numbered priority; unify spelling/grammar…
CamSoper Apr 30, 2026
ad09a60
Add Session 14 notes: label deploy, spelling/grammar extraction, pros…
CamSoper Apr 30, 2026
ed0248e
Trim caller-leak and stale references from fact-check.md
CamSoper Apr 30, 2026
ae8821c
Refine documentation review criteria and output formatting across mul…
CamSoper Apr 30, 2026
c979f36
Move deterministic frontmatter checks out of pre-commit lint into PR …
CamSoper Apr 30, 2026
5082459
Revert this branch's lint-markdown changes; cover gaps in blog review
CamSoper Apr 30, 2026
83d1966
Append Session 14 continuation: caller-leak audit and lint round-trip
CamSoper Apr 30, 2026
6e945c7
Restore pinned-comment.sh reference and tighten cross-refs in output-…
CamSoper Apr 30, 2026
1f644ca
Append Session 15 notes: residual-backlog cleanup
CamSoper Apr 30, 2026
1a545b2
Stop self-loop on Claude Code re-entrant workflow
CamSoper Apr 30, 2026
661d285
Tighten fact-check social-block sweep and re-entrant duplicate-occurr…
CamSoper Apr 30, 2026
f604c51
Update triage classification criteria and enhance documentation for A…
CamSoper Apr 30, 2026
d6f2dc0
Add Session 17 notes: e2e re-test findings, trivial-threshold bump, a…
CamSoper Apr 30, 2026
9f880f3
Switch trivial cap from adds+dels to additions only
CamSoper Apr 30, 2026
ae76061
Fix four issues surfaced by the Session-18 e2e run
CamSoper Apr 30, 2026
4e61aa4
Append Session 18 notes: e2e re-test, trivial-cap rethink, four clean…
CamSoper Apr 30, 2026
4e05967
Add note on PR experience and label behavior for pipeline improvements
CamSoper Apr 30, 2026
b1da2fa
Refine local review instructions and clarify action menu usage in PR …
CamSoper Apr 30, 2026
190dbc3
Add notes on PR label behavior and propose a lighter version of /docs…
CamSoper Apr 30, 2026
16ec501
Clarify documentation drift criteria and update examples for flagging…
CamSoper May 1, 2026
74c6725
Add domain:website and tighten trivial/fmonly to docs+blog only
CamSoper May 1, 2026
e504bed
Document Session 19 findings, including live vs legacy benchmark resu…
CamSoper May 1, 2026
25957b3
Document Session 20 findings, including design decisions for hashtag-…
CamSoper May 1, 2026
a54aba8
Add Vale prose linting: make target, CI integration, triage augmentation
CamSoper May 4, 2026
2ecabd7
Add hashtag-driven @claude routing and bundled Vale follow-ups
CamSoper May 4, 2026
b8ce1a9
Document Session 22: hashtag routing implementation, Vale follow-ups,…
CamSoper May 4, 2026
fc7830e
Fix #new-review dispatcher: use PULUMI_BOT_TOKEN to avoid bot-actor r…
CamSoper May 4, 2026
fccedf0
Drop review:claude-working from labels.json (Session 22 cleanup)
CamSoper May 4, 2026
ded7106
Document Session 23: end-to-end fork battery (11 PASS / 1 deferred); …
CamSoper May 4, 2026
d3970b7
Session 23 backlog: prune to 4 items (3 Vale UX follow-ups + quick /d…
CamSoper May 4, 2026
16edb69
Session 24: PR-text Vale UX polish (category rename, per-file roll-up…
CamSoper May 4, 2026
9c15ebe
Session 25: @claude workflow message UX polish (spinner on initial re…
CamSoper May 4, 2026
cb3b4f3
Document Sessions 24 + 25: Vale UX polish, @claude workflow polish, l…
CamSoper May 4, 2026
2d8d8a8
Session 26: Fix Vale-checkout race on three trigger paths
CamSoper May 4, 2026
83a41b4
Style findings: add H4 sub-heading + bold filename in roll-up summary
CamSoper May 4, 2026
acabac3
Polish Style findings render: 'issues' over 'nits', bold all numerals…
CamSoper May 4, 2026
20bc3ac
Document Session 26: Vale-checkout fix on three trigger paths + Style…
CamSoper May 4, 2026
9c60354
Reflow hard-wrapped paragraphs in claude-code-review.yml prompt block
CamSoper May 4, 2026
373fdd0
S26 addendum: hard-wrap reflow + Session 27 sketches
CamSoper May 5, 2026
5d72ced
S27 Sketch A: Clean up #new-review's stale "regenerating" comment
CamSoper May 5, 2026
406c8aa
S27 bucket-criteria tightenings: always-🚨 carve-outs + two-question test
CamSoper May 5, 2026
9d26e4f
Clarify comment on spelling/grammar/style check in claude-triage.yml
CamSoper May 5, 2026
1f4e653
Update spelling/grammar/style check message for clarity
CamSoper May 5, 2026
c9b9eb0
Clarify language in output format documentation for pre-existing issu…
CamSoper May 5, 2026
c4cfa96
S29 v3 output format: goal preamble, verification trail, editorial ba…
CamSoper May 5, 2026
dcb9db4
S29 polish: format readability + style render mode
CamSoper May 5, 2026
d8323d3
S30 fact-check: cited-claim spot-check (close PR #130 1/3 gap)
CamSoper May 5, 2026
a7a1258
S30 output-format: promote mandatory-sections rule to top-level invar…
CamSoper May 5, 2026
f4c750d
S30 prose-patterns + output-format: AI-drafting signals detector
CamSoper May 5, 2026
374324b
S30 output-format: investigation log surfaces null decisions
CamSoper May 5, 2026
7532d3a
S30 Change 1.1: force source-quote into cited-claim verdicts
CamSoper May 5, 2026
77fde5d
S30 Change 1.1 polish: trim wordy context out of cited-claim section
CamSoper May 5, 2026
3db8128
Document Sessions 27-30: bucket-criteria β†’ v3 output format β†’ S30 closes
CamSoper May 5, 2026
323e29e
S31 Change 1: decompose claim extraction into 4 parallel subagents
CamSoper May 6, 2026
2faf5d0
S31 Change 2: decompose AI-drafting-signals into structural + lexical…
CamSoper May 6, 2026
7f2aa28
S31 Change 3: parallelize cross-sibling reads as digest subagents
CamSoper May 6, 2026
fc2b694
S31 codify: Β§Subagent decomposition primitive in output-format.md
CamSoper May 6, 2026
d8cecd0
S31 polish: categorical specialist names; drop high/low extraction-co…
CamSoper May 6, 2026
20c5021
S31 polish: inline fresh-review-only guards at each dispatch site
CamSoper May 6, 2026
0875c7c
S31 docs: SESSION-NOTES Β§Session 31 entry
CamSoper May 6, 2026
08b639f
S32 cleanup: move SESSION-NOTES + FORK-PREP into battery scratch
CamSoper May 6, 2026
20c8bba
S32 Change 1: bucket-promotion driven by trail verdict; anti-hedge fo…
CamSoper May 6, 2026
d8c7cda
S32 Change 2: WebFetch permissive default; "unverifiable" is not the …
CamSoper May 6, 2026
5093c1e
S32 Change 3: bucket bullets MUST start with [L<start>-<end>] trail-r…
CamSoper May 6, 2026
8484a85
S32 Change 4: relax style-findings inline-vs-collapse threshold for l…
CamSoper May 6, 2026
f607a9f
S32 Change 5: validate-pinned.py + upsert-validated wrapper + ci.md rule
CamSoper May 6, 2026
ed26a5f
S32 Change 6: decompose code-examples into 4 parallel specialists per…
CamSoper May 6, 2026
3c684f9
S33 Change 1: collapse code-examples specialists 4 -> 2 by reasoning …
CamSoper May 6, 2026
040e6e2
S33 Change 2: two-pass fact-check verification; validator schema v1 -…
CamSoper May 6, 2026
e5c5fdd
S33 Change 3: validator fail-loud on External claim verification form…
CamSoper May 6, 2026
e19f7b6
S33 Change 4: route verification by source class; eliminate wasted Pa…
CamSoper May 6, 2026
d844a23
S33 Change 5: tighten cross-sibling sibling-read dispatch β€” uniform d…
CamSoper May 7, 2026
14be69f
S34 working session: schema v4, post-run telemetry, surface fixes
CamSoper May 7, 2026
bdf6ee5
S34 telemetry: upload raw execution log only; parser is operator-side
CamSoper May 7, 2026
c9dccae
S35 Ship 6: PR-add-aware internal-link-existence
CamSoper May 7, 2026
66d063a
S35 Ship 1: drop AI-drafting section, route tells through Vale rules
CamSoper May 7, 2026
4e5076c
Add necessity guidelines for image review criteria
CamSoper May 7, 2026
c5b5248
S35 Ship 4: Haiku surgical-fix between validator pass 1 and soft-floor
CamSoper May 7, 2026
08e0dab
S35 Ship 4 follow-up: re-enable --bare on claude CLI dispatch
CamSoper May 7, 2026
fc566f4
S36 Ship A: Pass 2/Pass 3 subdivision; validator schema v5
CamSoper May 7, 2026
deb2699
S36 Ship B: editorial-balance Tier 1 deterministic detector
CamSoper May 7, 2026
aba1196
S36 Ship C: 3 new surgical classes; corpus-tested 6 templates
CamSoper May 7, 2026
d4a43cc
S37 Ship A: inline-lane per-claim cap + observability annotation
CamSoper May 8, 2026
a0b18aa
S37 Ship B: harness friction β€” YAML allow-list + spec instructions
CamSoper May 8, 2026
3a13ab1
S38 Ship A: mining playbook for pulumi-internal verification
CamSoper May 8, 2026
0ee14df
S38 Ship B: PR-level 40-call cap + ::error:: at 50
CamSoper May 8, 2026
aed58ac
S38 Ship C: pulumi-internal-trail-provenance rule, schema v5β†’v6
CamSoper May 8, 2026
7793e5a
S38 Ship A fixup: trim playbook prose
CamSoper May 8, 2026
95cfa03
S38 Ship F: cross-sibling zero-peer check
CamSoper May 8, 2026
2749264
S38 Ship G: cross-sibling discovery as workflow pre-step
CamSoper May 8, 2026
90eb72c
S38 Ship H+I: frontmatter-validate pre-step + pre-computation reference
CamSoper May 8, 2026
7d871af
S38 Ship J: drop PARALLEL_PATTERNS, replace with URL-ownership map
CamSoper May 8, 2026
dad2849
S39 Ship K: Hugo build pre-step
CamSoper May 8, 2026
8c59894
S39 Ship K fix-up: hugo install + crash-safe script
CamSoper May 8, 2026
f96076d
S39 Ship E: split cross-reference into its own code-examples specialist
CamSoper May 9, 2026
83d5ab2
S40 cleanup: Ship K CI-environment-noise filter (hugo-build-validate.…
CamSoper May 11, 2026
71aae9c
S40 cleanup: docs-review spec consistency pass
CamSoper May 11, 2026
7d8f305
S40 cleanup: drop "Ship X" / "Bundle N" session labels from the opera…
CamSoper May 11, 2026
729dfab
Remove accidentally-committed .claude/scheduled_tasks.lock + gitignor…
CamSoper May 11, 2026
1a7b39f
S42: lift claim extraction into a deterministic, validator-gated pre-…
CamSoper May 11, 2026
53cb64f
Enhance claim extraction and documentation style checks
CamSoper May 11, 2026
39a9f29
Enhance claim extraction and documentation style checks
CamSoper May 11, 2026
7f076d3
Merge branch 'CamSoper/pr-review-overhaul' of https://github.com/pulu…
CamSoper May 11, 2026
6b95f13
Remove note about pre-existing issues from review output format
CamSoper May 11, 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 per the Style-findings render contract in `docs-review:references:output-format` (the `**line N:** _category_ β€” <message>` bullet form, grouped under a `#### Style findings` H4). 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