Install any skill in seconds. Free to start, no credit card required.
Get Started Free →Captures and retrieves PR-review findings in memory palaces. Use after PR review to store architectural decisions, patterns, and standards for future reference.
.claude/skills/athola-review-chamber/SKILL.md| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-01 | ✗→✓ | ▲ Improved | 177% | 0% |
| case-15 | ✗→✓ | ▲ Improved | 149% | 0% |
| case-02 | ✗→✓ | ▲ Improved | 1635% | 0% |
| case-03 | ✗→✓ | ▲ Improved | 49% | 0% |
| case-07 | ✗→✓ | ▲ Improved | 96% | 0% |
Capture, organize, and retrieve knowledge from PR reviews within project memory palaces.
The Review Chamber is a dedicated room within each project palace that stores valuable knowledge extracted from PR reviews. It transforms ephemeral PR discussions into persistent, searchable institutional memory.
review-chamber/
├── decisions/ # Architectural choices from PR discussions
├── patterns/ # Recurring issues and their solutions
├── standards/ # Quality bar examples and coding conventions
└── lessons/ # Post-mortems and learningsVerification: Run the command with --help flag to verify availability.
After a PR review completes, evaluate findings for knowledge capture:
markdown## Knowledge Detection Checklist For each finding from sanctum:pr-review, evaluate: - [ ] **Novelty**: Is this a new pattern or first occurrence? - [ ] **Applicability**: Will this affect future PRs in this area? - [ ] **Durability**: Is this architectural (capture) or tactical (skip)? - [ ] **Connectivity**: Does it link to existing palace rooms?
Verification: Run the command with --help flag to verify availability.
Route findings to appropriate subrooms:
| Finding Type | Target Room | Criteria | |-------------|-------------|----------| | Architectural choice | decisions/ | BLOCKING and architectural context | | Recurring issue | patterns/ | Seen before or likely to recur | | Quality example | standards/ | Exemplifies coding standards | | Learning/insight | lessons/ | Retrospective or post-mortem |
Create structured entry with:
yaml--- source_pr: "#42 - Add authentication" date: 2025-01-15 participants: [author, reviewer1, reviewer2] palace_location: review-chamber/decisions related_rooms: [workshop/auth-patterns, library/security-adr] tags: [authentication, jwt, security] --- ## Decision Title ### Decision Chose JWT tokens over server-side sessions. ### Context (from PR discussion) - Reviewer asked: "Why not use sessions?" - Author explained: stateless scaling requirements - Discussion refined: added refresh token rotation ### Captured Knowledge - **Pattern**: JWT + refresh tokens for stateless auth - **Tradeoff**: Complexity vs. horizontal scaling - **Application**: Use for all API authentication ### Connected Concepts - [[auth-patterns]] - Updated with JWT best practices - [[security-adr-003]] - Referenced this decision
Verification: Run the command with --help flag to verify availability.
After capture, update related palace rooms:
bash# Automatic: sanctum:pr-review triggers capture /pr-review 42 # → Review posted to GitHub # → Knowledge capture evaluates findings # → Significant decisions stored in review-chamber # Manual: Explicitly capture from PR /review-room capture 42 --room decisions
Verification: Run the command with --help flag to verify availability.
bash# Find authentication decisions /review-room search "authentication" --room decisions # Find patterns in a specific area /review-room search "error handling" --room patterns --tags api # List recent entries /review-room list --limit 10 --room standards
Verification: Run the command with --help flag to verify availability.
When starting work in a code area:
markdown## Relevant Review Knowledge Starting work in `auth/` directory... **Past Decisions:** - [#42] JWT token decision → decisions/jwt-over-sessions - [#67] Rate limiting pattern → patterns/api-throttling **Quality Standards:** - [#55] Error response format → standards/api-errors **Known Patterns:** - [#38] Token refresh edge case → patterns/token-refresh-race
Verification: Run the command with --help flag to verify availability.
The review-chamber integrates after Phase 6 (Generate Report):
**Verification:** Run the command with `--help` flag to verify availability.
Phase 6: Generate Report
↓
[HOOK] Evaluate findings for knowledge capture
↓
For each significant finding:
├── Classify into room type
├── Create ReviewEntry
├── Add to project palace
└── Update connections
↓
Phase 7: Post to GitHubVerification: Run the command with --help flag to verify availability.
Uses the same evaluation framework:
| Criterion | Weight | PR Review Application | |-----------|--------|----------------------| | Novelty | 25% | New pattern or first occurrence | | Applicability | 30% | Affects future PRs in this area | | Durability | 20% | Architectural vs tactical | | Connectivity | 15% | Links to existing rooms | | Authority | 10% | Senior reviewer or domain expert |
Extends search to include review-chamber:
bashpython scripts/palace_manager.py search "authentication" \ --palace project-name \ --room review-chamber \ --type semantic
Verification: Run python --version to verify Python environment.
bash# Capture knowledge from PR /review-room capture <pr_number> [--room <room_type>] [--tags <tags>] # Search review chamber /review-room search "<query>" [--room <room_type>] [--tags <tags>] # List entries /review-room list [--room <room_type>] [--limit N] # View entry details /review-room view <entry_id> # Export for documentation /review-room export [--format markdown|json] [--room <room_type>] # Statistics /review-room stats [--palace <palace_id>]
Verification: Run the command with --help flag to verify availability.
modules/capture-workflow.md for detailed capture processmodules/evaluation-criteria.md for knowledge worth assessmentmodules/search-patterns.md for query optimizationfinding; findings scoring ≥ 60 are captured, < 60 are skipped
decisions/, patterns/, standards/, or lessons/
source_pr, date,palace_location, and at least one tag
existing palace rooms after capture
palace_manager.py search "<topic>" returns the captured entrywhen queried by its tags or content after storage
| Case | Status | Duration (ms) | Turns | Tokens | Tool calls | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Without | With | Δ | Without | With | Δ | Without | With | Δ | Without | With | Δ | ||
case-01 | fail→pass | 10,802 | 16,461 | +52% | 1 | 1 | 0% | 1,905 | 5,270 | +177% | 0 | 0 | — |
case-15 | fail→pass | 7,218 | 2,501 | -65% | 1 | 1 | 0% | 1,063 | 2,650 | +149% | 0 | 0 | — |
case-02 | fail→pass | 4,994 | 12,297 | +146% | 1 | 1 | 0% | 258 | 4,476 | +1635% | 0 | 0 | — |
case-03 | fail→pass | 25,727 | 23,676 | -8% | 1 | 1 | 0% | 4,606 | 6,843 | +49% | 0 | 0 | — |
case-04 | fail→fail | 5,126 | 7,880 | +54% | 1 | 1 | 0% | 897 | 3,618 | +303% | 0 | 0 | — |
case-05 | fail→fail | 12,432 | 10,583 | -15% | 1 | 1 | 0% | 2,236 | 4,130 | +85% | 0 | 0 | — |
case-06 | pass→fail | 10,781 | 8,439 | -22% | 1 | 1 | 0% | 1,804 | 3,613 | +100% | 0 | 0 | — |
case-07 | fail→pass | 9,257 | 5,031 | -46% | 1 | 1 | 0% | 1,591 | 3,126 | +96% | 0 | 0 | — |
case-08 | fail→pass | 16,922 | 2,856 | -83% | 1 | 1 | 0% | 1,276 | 2,738 | +115% | 0 | 0 | — |
case-09 | fail→pass | 9,060 | 3,411 | -62% | 1 | 1 | 0% | 1,543 | 2,794 | +81% | 0 | 0 | — |
case-10 | fail→pass | 11,588 | 3,410 | -71% | 1 | 1 | 0% | 1,772 | 2,788 | +57% | 0 | 0 | — |
case-11 | fail→pass | 7,097 | 4,514 | -36% | 1 | 1 | 0% | 1,282 | 3,133 | +144% | 0 | 0 | — |
case-12 | fail→pass | 6,351 | 3,246 | -49% | 1 | 1 | 0% | 1,114 | 2,906 | +161% | 0 | 0 | — |
case-13 | pass→pass | 7,779 | 3,851 | -50% | 1 | 1 | 0% | 1,289 | 2,946 | +129% | 0 | 0 | — |
case-14 | fail→pass | 7,523 | 3,065 | -59% | 1 | 1 | 0% | 1,160 | 2,723 | +135% | 0 | 0 | — |
case-16 | fail→pass | 4,515 | 2,541 | -44% | 1 | 1 | 0% | 727 | 2,697 | +271% | 0 | 0 | — |
case-17 | pass→pass | 10,162 | 3,825 | -62% | 1 | 1 | 0% | 1,622 | 2,864 | +77% | 0 | 0 | — |
case-18 | fail→pass | 10,699 | 3,226 | -70% | 1 | 1 | 0% | 1,765 | 2,838 | +61% | 0 | 0 | — |
case-19 | fail→pass | 8,088 | 2,255 | -72% | 1 | 1 | 0% | 1,225 | 2,542 | +108% | 0 | 0 | — |
case-20 | fail→pass | 9,278 | 2,068 | -78% | 1 | 1 | 0% | 1,475 | 2,532 | +72% | 0 | 0 | — |
case-21 | fail→pass | 8,346 | 1,473 | -82% | 1 | 1 | 0% | 1,305 | 2,426 | +86% | 0 | 0 | — |
case-22 | fail→pass | 7,452 | 3,114 | -58% | 1 | 1 | 0% | 1,049 | 2,714 | +159% | 0 | 0 | — |
case-23 | fail→pass | 6,822 | 1,338 | -80% | 1 | 1 | 0% | 1,132 | 2,411 | +113% | 0 | 0 | — |
DecimalAI ran this skill against gemini-3.6-flash twice over the same eval suite — once with the skill loaded and once without — and compared the two runs case by case. 23 cases were attempted, and 22 counted toward the lift figure. The other 1 produced results that are not comparable between the two arms, so they are excluded from the headline rather than averaged into it. The headline lift of +74 percentage points is the difference between those two pass rates over the 22 comparable cases. 1 case got worse with the skill loaded, and it is included in that figure.
Without the skill loaded, the model failed this case. With it loaded, the same prompt on the same model passed. This is one improved case from the latest verified run; every case, including any that regressed, is in the table above.
Other measured skills in the registry, with their headline benchmark lift.