{"id":"fe819c27-b0e0-49fd-a75e-9f8489c4a774","entityType":"agent","slug":"clawhub-athola-nm-memory-palace-review-chamber","name":"review-chamber","canonicalUrl":"https://www.xpersona.co/agent/clawhub-athola-nm-memory-palace-review-chamber","canonicalPath":"/agent/clawhub-athola-nm-memory-palace-review-chamber","generatedAt":"2026-10-10T09:08:01.570Z","source":"CLAWHUB","claimStatus":"UNCLAIMED","verificationTier":"NONE","summary":{"evidence":{"source":"editorial-content","verified":true,"confidence":"high","updatedAt":"2026-10-10T07:28:39.271Z","emptyReason":null},"description":"Captures and retrieves PR-review findings in memory palaces. Use after PR review to store architectural decisions, patterns, and standards for future reference Skill: review-chamber Owner: athola Summary: Captures and retrieves PR-review findings in memory palaces. Use after PR review to store architectural decisions, patterns, and standards for future reference Tags: latest:1.9.19 Version history: v1.9.19 | 2026-08-26T13:17:14.115Z | user Release v1.9.19 v1.9.17 | 2026-07-30T05:37:38.039Z | user Release v1.9.17 v1.9.16 | 2026-07-14T19:54:21.680Z | user Release v1.9.16 v1.9","descriptionLabel":"Technical summary","evidenceSummary":"Capability contract not published. No trust telemetry is available yet. 1.6K downloads reported by the source. Last updated 10/10/2026.","installCommand":"clawhub skill install s17emme0e2m3cpf7k2jvp3a84984b8z9:nm-memory-palace-review-chamber","sourceUrl":"https://clawhub.ai/athola/nm-memory-palace-review-chamber","homepage":"https://clawhub.ai/athola/skills/nm-memory-palace-review-chamber","primaryLinks":[{"label":"View on ClawHub","url":"https://clawhub.ai/athola/nm-memory-palace-review-chamber","kind":"source"},{"label":"Homepage","url":"https://clawhub.ai/athola/skills/nm-memory-palace-review-chamber","kind":"homepage"}],"safetyScore":84,"overallRank":62,"popularityScore":40,"trustScore":null,"claimedByName":null,"isOwner":false,"seoDescription":"Captures and retrieves PR-review findings in memory palaces. Use after PR review to store architectural decisions, patterns, and standards for future reference "},"coverage":{"evidence":{"source":"public-profile","verified":false,"confidence":"medium","updatedAt":"2026-10-10T07:28:39.271Z","emptyReason":null},"protocols":[{"protocol":"OPENCLEW","label":"OpenClaw","status":"self-declared","notes":"Declared in the public agent profile."}],"capabilities":[],"verifiedCount":0,"selfDeclaredCount":1,"capabilityMatrix":{"rows":[{"key":"OPENCLEW","type":"protocol","support":"unknown","confidenceSource":"profile","notes":"Listed on profile"}],"flattenedTokens":"protocol:OPENCLEW|unknown|profile"}},"adoption":{"evidence":{"source":"CLAWHUB","verified":false,"confidence":"medium","updatedAt":"2026-10-10T07:28:39.271Z","emptyReason":null},"stars":null,"forks":null,"downloads":1591,"packageName":null,"latestVersion":"1.9.19","tractionLabel":"1.6K downloads"},"release":{"evidence":{"source":"CLAWHUB","verified":false,"confidence":"medium","updatedAt":"2026-10-10T07:28:39.270Z","emptyReason":null},"lastUpdatedAt":"2026-10-10T07:28:39.271Z","lastCrawledAt":"2026-10-10T07:28:39.270Z","lastIndexedAt":null,"nextCrawlAt":"2026-10-11T07:28:39.270Z","lastVerifiedAt":null,"highlights":[{"version":"1.9.19","createdAt":"2026-08-26T13:17:14.115Z","changelog":"Release v1.9.19","fileCount":6,"zipByteSize":13726},{"version":"1.9.17","createdAt":"2026-07-30T05:37:38.039Z","changelog":"Release v1.9.17","fileCount":6,"zipByteSize":13594},{"version":"1.9.16","createdAt":"2026-07-14T19:54:21.680Z","changelog":"Release v1.9.16","fileCount":6,"zipByteSize":13537},{"version":"1.9.14","createdAt":"2026-06-30T18:02:57.640Z","changelog":"Release v1.9.14","fileCount":6,"zipByteSize":13763},{"version":"1.9.13","createdAt":"2026-06-27T16:21:09.806Z","changelog":"Release v1.9.13","fileCount":6,"zipByteSize":13800},{"version":"1.9.12","createdAt":"2026-06-19T03:15:55.364Z","changelog":"Release v1.9.12","fileCount":6,"zipByteSize":13743},{"version":"1.0.3","createdAt":"2026-06-18T14:10:54.998Z","changelog":"Release v1.9.12","fileCount":6,"zipByteSize":13641},{"version":"1.0.2","createdAt":"2026-05-09T02:18:42.396Z","changelog":"Release v1.9.5","fileCount":6,"zipByteSize":13821}]},"execution":{"evidence":{"source":"CLAWHUB","verified":false,"confidence":"low","updatedAt":null,"emptyReason":"No published capability contract is available yet."},"installCommand":"clawhub skill install s17emme0e2m3cpf7k2jvp3a84984b8z9:nm-memory-palace-review-chamber","setupComplexity":"low","setupSteps":["Setup complexity is classified as HIGH. You must provision dedicated cloud infrastructure or an isolated VM. Do not run this directly on your local workstation.","Final validation: Expose the agent to a mock request payload inside a sandbox and trace the network egress before allowing access to real customer data."],"contract":{"contractStatus":"missing","authModes":[],"requires":[],"forbidden":[],"supportsMcp":false,"supportsA2a":false,"supportsStreaming":false,"inputSchemaRef":null,"outputSchemaRef":null,"dataRegion":null,"contractUpdatedAt":null,"sourceUpdatedAt":null,"freshnessSeconds":null},"invocationGuide":{"preferredApi":{"snapshotUrl":"https://www.xpersona.co/api/v1/agents/clawhub-athola-nm-memory-palace-review-chamber/snapshot","contractUrl":"https://www.xpersona.co/api/v1/agents/clawhub-athola-nm-memory-palace-review-chamber/contract","trustUrl":"https://www.xpersona.co/api/v1/agents/clawhub-athola-nm-memory-palace-review-chamber/trust"},"curlExamples":["curl -s \"https://www.xpersona.co/api/v1/agents/clawhub-athola-nm-memory-palace-review-chamber/snapshot\"","curl -s \"https://www.xpersona.co/api/v1/agents/clawhub-athola-nm-memory-palace-review-chamber/contract\"","curl -s \"https://www.xpersona.co/api/v1/agents/clawhub-athola-nm-memory-palace-review-chamber/trust\""],"jsonRequestTemplate":{"query":"summarize this repo","constraints":{"maxLatencyMs":2000,"protocolPreference":["OPENCLEW"]}},"jsonResponseTemplate":{"ok":true,"result":{"summary":"...","confidence":0.9},"meta":{"source":"CLAWHUB","generatedAt":"2026-10-10T09:08:01.568Z"}},"retryPolicy":{"maxAttempts":3,"backoffMs":[500,1500,3500],"retryableConditions":["HTTP_429","HTTP_503","NETWORK_TIMEOUT"]}},"endpoints":{"dossierUrl":"https://www.xpersona.co/api/v1/agents/clawhub-athola-nm-memory-palace-review-chamber/dossier","snapshotUrl":"https://www.xpersona.co/api/v1/agents/clawhub-athola-nm-memory-palace-review-chamber/snapshot","contractUrl":"https://www.xpersona.co/api/v1/agents/clawhub-athola-nm-memory-palace-review-chamber/contract","trustUrl":"https://www.xpersona.co/api/v1/agents/clawhub-athola-nm-memory-palace-review-chamber/trust"}},"reliability":{"evidence":{"source":"runtime-metrics","verified":false,"confidence":"low","updatedAt":null,"emptyReason":"No trust, reliability, or runtime telemetry is available."},"trust":{"status":"unavailable","handshakeStatus":"UNKNOWN","verificationFreshnessHours":null,"reputationScore":null,"p95LatencyMs":null,"successRate30d":null,"fallbackRate":null,"attempts30d":null,"trustUpdatedAt":null,"trustConfidence":"unknown","sourceUpdatedAt":null,"freshnessSeconds":null},"decisionGuardrails":{"doNotUseIf":["Contract metadata is missing or unavailable for deterministic execution."],"safeUseWhen":[],"riskFlags":["missing_or_unavailable_contract","trust_data_unavailable","schema_references_missing"],"operationalConfidence":"low"},"executionMetrics":{"observedLatencyMsP50":null,"observedLatencyMsP95":null,"estimatedCostUsd":null,"uptime30d":null,"rateLimitRpm":null,"rateLimitBurst":null,"lastVerifiedAt":null,"verificationSource":null},"runtimeMetrics":{"successRate":null,"avgLatencyMs":null,"avgCostUsd":null,"hallucinationRate":null,"retryRate":null,"disputeRate":null,"p50Latency":null,"p95Latency":null,"lastUpdated":null}},"benchmarks":{"evidence":{"source":"no-benchmark-data","verified":false,"confidence":"low","updatedAt":null,"emptyReason":"No benchmark suites or observed failure patterns are available."},"suites":[],"failurePatterns":[]},"artifacts":{"evidence":{"source":"CLAWHUB","verified":false,"confidence":"high","updatedAt":"2026-10-10T07:28:39.271Z","emptyReason":null},"readme":"Skill: review-chamber\n\nOwner: athola\n\nSummary: Captures and retrieves PR-review findings in memory palaces. Use after PR review to store architectural decisions, patterns, and standards for future reference\n\nTags: latest:1.9.19\n\nVersion history:\n\nv1.9.19 | 2026-08-26T13:17:14.115Z | user\n\nRelease v1.9.19\n\nv1.9.17 | 2026-07-30T05:37:38.039Z | user\n\nRelease v1.9.17\n\nv1.9.16 | 2026-07-14T19:54:21.680Z | user\n\nRelease v1.9.16\n\nv1.9.14 | 2026-06-30T18:02:57.640Z | user\n\nRelease v1.9.14\n\nv1.9.13 | 2026-06-27T16:21:09.806Z | user\n\nRelease v1.9.13\n\nv1.9.12 | 2026-06-19T03:15:55.364Z | user\n\nRelease v1.9.12\n\nv1.0.3 | 2026-06-18T14:10:54.998Z | user\n\nRelease v1.9.12\n\nv1.0.2 | 2026-05-09T02:18:42.396Z | user\n\nRelease v1.9.5\n\nv1.0.1 | 2026-05-06T14:19:47.912Z | user\n\nRelease v1.9.4\n\nv1.0.0 | 2026-04-14T13:02:28.449Z | auto\n\nVersion 1.0.0 — Initial Release\n\n- Introduces the review-chamber skill for capturing and retrieving pull request review knowledge in memory palaces.\n- Provides structured workflows for knowledge extraction, classification, and integration from PR reviews.\n- Defines project-specific rooms for architectural decisions, recurring patterns, coding standards, and post-mortems.\n- Integrates with `night-market.memory-palace:knowledge-intake` and `night-market.sanctum:pr-review` for automated or manual capture.\n- Enables semantic search and surfacing of relevant review knowledge to inform future work.\n\nArchive index:\n\nArchive v1.9.19: 6 files, 13726 bytes\n\nFiles: modules/capture-workflow.md (6668b), modules/evaluation-criteria.md (7010b), modules/search-patterns.md (7517b), skill-card.md (2250b), SKILL.md (9372b), _meta.json (151b)\n\nFile v1.9.19:SKILL.md\n\n---\nname: review-chamber\ndescription: |\n  Captures and retrieves PR-review findings in memory palaces. Use after PR review to store architectural decisions, patterns, and standards for future reference\nversion: 1.9.8\nmetadata: {\"openclaw\": {\"homepage\": \"https://github.com/athola/claude-night-market/tree/master/plugins/memory-palace\", \"emoji\": \"\\ud83e\\udd9e\", \"requires\": {\"config\": [\"night-market.memory-palace:knowledge-intake\", \"night-market.sanctum:pr-review\"]}}}\nsource: claude-night-market\nsource_plugin: memory-palace\n---\n\n> **Night Market Skill** — ported from [claude-night-market/memory-palace](https://github.com/athola/claude-night-market/tree/master/plugins/memory-palace). For the full experience with agents, hooks, and commands, install the Claude Code plugin.\n\n\n## Table of Contents\n\n- [Overview](#overview)\n- [Room Structure](#room-structure)\n- [Workflow Phases](#workflow-phases)\n- [Phase 1: Knowledge Detection](#phase-1:-knowledge-detection)\n- [Knowledge Detection Checklist](#knowledge-detection-checklist)\n- [Phase 2: Classification](#phase-2:-classification)\n- [Phase 3: Capture](#phase-3:-capture)\n- [Decision Title](#decision-title)\n- [Decision](#decision)\n- [Context (from PR discussion)](#context-(from-pr-discussion))\n- [Captured Knowledge](#captured-knowledge)\n- [Connected Concepts](#connected-concepts)\n- [Phase 4: Integration](#phase-4:-integration)\n- [Usage Examples](#usage-examples)\n- [Capture After PR Review](#capture-after-pr-review)\n- [Search Past Decisions](#search-past-decisions)\n- [Surface Relevant Knowledge](#surface-relevant-knowledge)\n- [Relevant Review Knowledge](#relevant-review-knowledge)\n- [Integration Points](#integration-points)\n- [With sanctum:pr-review](#with-sanctum:pr-review)\n- [With knowledge-intake](#with-knowledge-intake)\n- [With knowledge-locator](#with-knowledge-locator)\n- [Evaluation Rubric](#evaluation-rubric)\n- [Worth Capturing (Score ≥ 60)](#worth-capturing-(score-≥-60))\n- [Skip (Score < 60)](#skip-(score-<-60))\n- [CLI Reference](#cli-reference)\n- [Best Practices](#best-practices)\n\n\n# PR Review Chamber Skill\n\nCapture, organize, and retrieve knowledge from PR reviews within project memory palaces.\n\n\n## When To Use\n\n- Capturing PR review knowledge for future reference\n- Building review pattern libraries from past reviews\n\n## When NOT To Use\n\n- Quick self-reviews of trivial changes\n- Automated CI checks that cover the review scope\n\n## Overview\n\nThe 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.\n\n## Room Structure\n\n```\nreview-chamber/\n├── decisions/      # Architectural choices from PR discussions\n├── patterns/       # Recurring issues and their solutions\n├── standards/      # Quality bar examples and coding conventions\n└── lessons/        # Post-mortems and learnings\n```\n**Verification:** Run the command with `--help` flag to verify availability.\n\n## Workflow Phases\n\n### Phase 1: Knowledge Detection\n\nAfter a PR review completes, evaluate findings for knowledge capture:\n\n```markdown\n## Knowledge Detection Checklist\n\nFor each finding from sanctum:pr-review, evaluate:\n\n- [ ] **Novelty**: Is this a new pattern or first occurrence?\n- [ ] **Applicability**: Will this affect future PRs in this area?\n- [ ] **Durability**: Is this architectural (capture) or tactical (skip)?\n- [ ] **Connectivity**: Does it link to existing palace rooms?\n```\n**Verification:** Run the command with `--help` flag to verify availability.\n\n### Phase 2: Classification\n\nRoute findings to appropriate subrooms:\n\n| Finding Type | Target Room | Criteria |\n|-------------|-------------|----------|\n| Architectural choice | `decisions/` | BLOCKING and architectural context |\n| Recurring issue | `patterns/` | Seen before or likely to recur |\n| Quality example | `standards/` | Exemplifies coding standards |\n| Learning/insight | `lessons/` | Retrospective or post-mortem |\n\n### Phase 3: Capture\n\nCreate structured entry with:\n\n```yaml\n---\nsource_pr: \"#42 - Add authentication\"\ndate: 2025-01-15\nparticipants: [author, reviewer1, reviewer2]\npalace_location: review-chamber/decisions\nrelated_rooms: [workshop/auth-patterns, library/security-adr]\ntags: [authentication, jwt, security]\n---\n\n## Decision Title\n\n### Decision\nChose JWT tokens over server-side sessions.\n\n### Context (from PR discussion)\n- Reviewer asked: \"Why not use sessions?\"\n- Author explained: stateless scaling requirements\n- Discussion refined: added refresh token rotation\n\n### Captured Knowledge\n- **Pattern**: JWT + refresh tokens for stateless auth\n- **Tradeoff**: Complexity vs. horizontal scaling\n- **Application**: Use for all API authentication\n\n### Connected Concepts\n- [[auth-patterns]] - Updated with JWT best practices\n- [[security-adr-003]] - Referenced this decision\n```\n**Verification:** Run the command with `--help` flag to verify availability.\n\n### Phase 4: Integration\n\nAfter capture, update related palace rooms:\n\n1. Add bidirectional links to related entries\n2. Update tags in project palace index\n3. Notify if this contradicts existing entries\n\n## Usage Examples\n\n### Capture After PR Review\n\n```bash\n# Automatic: sanctum:pr-review triggers capture\n/pr-review 42\n# → Review posted to GitHub\n# → Knowledge capture evaluates findings\n# → Significant decisions stored in review-chamber\n\n# Manual: Explicitly capture from PR\n/review-room capture 42 --room decisions\n```\n**Verification:** Run the command with `--help` flag to verify availability.\n\n### Search Past Decisions\n\n```bash\n# Find authentication decisions\n/review-room search \"authentication\" --room decisions\n\n# Find patterns in a specific area\n/review-room search \"error handling\" --room patterns --tags api\n\n# List recent entries\n/review-room list --limit 10 --room standards\n```\n**Verification:** Run the command with `--help` flag to verify availability.\n\n### Surface Relevant Knowledge\n\nWhen starting work in a code area:\n\n```markdown\n## Relevant Review Knowledge\n\nStarting work in `auth/` directory...\n\n**Past Decisions:**\n- [#42] JWT token decision → decisions/jwt-over-sessions\n- [#67] Rate limiting pattern → patterns/api-throttling\n\n**Quality Standards:**\n- [#55] Error response format → standards/api-errors\n\n**Known Patterns:**\n- [#38] Token refresh edge case → patterns/token-refresh-race\n```\n**Verification:** Run the command with `--help` flag to verify availability.\n\n## Integration Points\n\n### With sanctum:pr-review\n\nThe review-chamber integrates after Phase 6 (Generate Report):\n\n```\n**Verification:** Run the command with `--help` flag to verify availability.\nPhase 6: Generate Report\n    ↓\n[HOOK] Evaluate findings for knowledge capture\n    ↓\n    For each significant finding:\n    ├── Classify into room type\n    ├── Create ReviewEntry\n    ├── Add to project palace\n    └── Update connections\n    ↓\nPhase 7: Post to GitHub\n```\n**Verification:** Run the command with `--help` flag to verify availability.\n\n### With knowledge-intake\n\nUses the same evaluation framework:\n\n| Criterion | Weight | PR Review Application |\n|-----------|--------|----------------------|\n| Novelty | 25% | New pattern or first occurrence |\n| Applicability | 30% | Affects future PRs in this area |\n| Durability | 20% | Architectural vs tactical |\n| Connectivity | 15% | Links to existing rooms |\n| Authority | 10% | Senior reviewer or domain expert |\n\n### With knowledge-locator\n\nExtends search to include review-chamber:\n\n```bash\npython scripts/palace_manager.py search \"authentication\" \\\n  --palace project-name \\\n  --room review-chamber \\\n  --type semantic\n```\n**Verification:** Run `python --version` to verify Python environment.\n\n## Evaluation Rubric\n\n### Worth Capturing (Score ≥ 60)\n\n- **Architectural decisions** with documented rationale\n- **Recurring patterns** seen in 2+ PRs\n- **Security/performance** critical findings\n- **Domain knowledge** that explains business logic\n- **Convention changes** that affect future code\n\n### Skip (Score < 60)\n\n- One-off tactical fixes\n- Style preferences without rationale\n- Obvious bugs without pattern\n- External dependency issues\n- Temporary workarounds\n\n## CLI Reference\n\n```bash\n# Capture knowledge from PR\n/review-room capture <pr_number> [--room <room_type>] [--tags <tags>]\n\n# Search review chamber\n/review-room search \"<query>\" [--room <room_type>] [--tags <tags>]\n\n# List entries\n/review-room list [--room <room_type>] [--limit N]\n\n# View entry details\n/review-room view <entry_id>\n\n# Export for documentation\n/review-room export [--format markdown|json] [--room <room_type>]\n\n# Statistics\n/review-room stats [--palace <palace_id>]\n```\n**Verification:** Run the command with `--help` flag to verify availability.\n\n## Best Practices\n\n1. **Capture decisions immediately** - Context is freshest right after review\n2. **Link related entries** - Build the knowledge graph\n3. **Use consistent tags** - Enable cross-project discovery\n4. **Review periodically** - Prune outdated entries\n5. **Surface proactively** - Show relevant knowledge when starting related work\n\n## Module Reference\n\n- See `modules/capture-workflow.md` for detailed capture process\n- See `modules/evaluation-criteria.md` for knowledge worth assessment\n- See `modules/search-patterns.md` for query optimization\n\nFile v1.9.19:_meta.json\n\n{\n  \"ownerId\": \"kn7d107jg9jv602h9ytsegydq184a42s\",\n  \"slug\": \"nm-memory-palace-review-chamber\",\n  \"version\": \"1.9.19\",\n  \"publishedAt\": 1787750234115\n}\n\nFile v1.9.19:modules/capture-workflow.md\n\n# Capture Workflow Module\n\nDetailed workflow for capturing PR review knowledge into the review chamber.\n\n## Trigger Points\n\nKnowledge capture can be triggered:\n\n1. **Automatically**: After `sanctum:pr-review` completes Phase 6\n2. **Manually**: Via `/review-room capture` command\n3. **Retroactively**: From existing PR review threads\n\n## Automatic Capture Flow\n\n```mermaid\ngraph TD\n    A[PR Review Completed] --> B{Has BLOCKING findings?}\n    B -->|Yes| C[Evaluate each finding]\n    B -->|No| D{Has IN-SCOPE findings?}\n    D -->|Yes| C\n    D -->|No| E[Skip capture]\n\n    C --> F{Score ≥ 60?}\n    F -->|Yes| G[Classify room type]\n    F -->|No| E\n\n    G --> H[Create ReviewEntry]\n    H --> I[Add to project palace]\n    I --> J[Update connections]\n    J --> K[Report captured entries]\n```\n\n## Finding Evaluation\n\nFor each PR finding, compute a capture score:\n\n### Novelty Check (25 points max)\n\n```python\ndef evaluate_novelty(finding, existing_entries):\n    \"\"\"Check if finding represents new knowledge.\"\"\"\n\n    # Search existing entries for similar content\n    similar = search_similar(finding.content, existing_entries)\n\n    if not similar:\n        return 25  # Completely novel\n\n    best_match = similar[0]\n    if best_match.similarity < 0.5:\n        return 20  # Mostly novel\n    elif best_match.similarity < 0.8:\n        return 10  # Partial overlap - may add context\n    else:\n        return 0   # Duplicate - skip\n```\n\n### Applicability Check (30 points max)\n\n```python\ndef evaluate_applicability(finding, project_context):\n    \"\"\"Estimate future relevance.\"\"\"\n\n    score = 0\n\n    # Affects common code paths\n    if finding.file in project_context.hot_paths:\n        score += 15\n\n    # Relates to core domain\n    if finding.category in project_context.core_domains:\n        score += 10\n\n    # Has broad applicability\n    if len(finding.affected_files) > 3:\n        score += 5\n\n    return min(30, score)\n```\n\n### Durability Check (20 points max)\n\n```python\ndef evaluate_durability(finding):\n    \"\"\"Distinguish architectural from tactical.\"\"\"\n\n    # Architectural indicators\n    architectural_keywords = [\n        'architecture', 'design', 'pattern', 'convention',\n        'security', 'performance', 'scalability', 'api'\n    ]\n\n    # Tactical indicators\n    tactical_keywords = [\n        'typo', 'formatting', 'temporary', 'workaround',\n        'quick fix', 'hotfix', 'revert'\n    ]\n\n    content_lower = finding.content.lower()\n\n    arch_matches = sum(1 for k in architectural_keywords if k in content_lower)\n    tact_matches = sum(1 for k in tactical_keywords if k in content_lower)\n\n    if arch_matches > tact_matches:\n        return 20  # Architectural\n    elif arch_matches == tact_matches:\n        return 10  # Mixed\n    else:\n        return 0   # Tactical - skip\n```\n\n### Connectivity Check (15 points max)\n\n```python\ndef evaluate_connectivity(finding, palace):\n    \"\"\"Check links to existing knowledge.\"\"\"\n\n    score = 0\n\n    # Links to existing ADRs\n    if finding.references_adr:\n        score += 5\n\n    # Links to workshop patterns\n    if finding.references_pattern:\n        score += 5\n\n    # Would create new connections\n    potential_links = find_potential_links(finding, palace)\n    if len(potential_links) > 2:\n        score += 5\n\n    return score\n```\n\n### Authority Check (10 points max)\n\n```python\ndef evaluate_authority(finding, participants):\n    \"\"\"Weight by reviewer expertise.\"\"\"\n\n    score = 0\n\n    # Senior reviewer involved\n    if any(is_senior(p) for p in participants):\n        score += 5\n\n    # Domain expert reviewed\n    domain = extract_domain(finding)\n    if any(is_domain_expert(p, domain) for p in participants):\n        score += 5\n\n    return score\n```\n\n## Room Classification Logic\n\nAfter evaluation, classify into appropriate room:\n\n```python\ndef classify_finding(finding, score):\n    \"\"\"Determine target room for finding.\"\"\"\n\n    if score < 60:\n        return None  # Don't capture\n\n    severity = finding.severity\n    category = finding.category.lower()\n\n    # Decisions: Architectural choices with rationale\n    if severity == \"BLOCKING\" and any(k in category for k in [\n        'architecture', 'design', 'security', 'api'\n    ]):\n        return \"decisions\"\n\n    # Patterns: Recurring issues or solutions\n    if is_recurring(finding) or any(k in category for k in [\n        'pattern', 'recurring', 'common', 'best-practice'\n    ]):\n        return \"patterns\"\n\n    # Standards: Quality examples\n    if any(k in category for k in [\n        'quality', 'style', 'convention', 'standard'\n    ]):\n        return \"standards\"\n\n    # Lessons: Retrospective insights\n    if any(k in category for k in [\n        'lesson', 'learning', 'retrospective', 'insight'\n    ]):\n        return \"lessons\"\n\n    # Default: High-severity findings as patterns\n    if severity == \"BLOCKING\":\n        return \"patterns\"\n\n    return None\n```\n\n## Entry Creation\n\nCreate structured entry from finding:\n\n```python\ndef create_review_entry(finding, pr_info, room_type):\n    \"\"\"Create ReviewEntry from finding.\"\"\"\n\n    return ReviewEntry(\n        source_pr=f\"#{pr_info.number} - {pr_info.title}\",\n        title=finding.title,\n        room_type=room_type,\n        content={\n            \"decision\": finding.description,\n            \"context\": extract_discussion_context(finding),\n            \"captured_knowledge\": {\n                \"severity\": finding.severity,\n                \"category\": finding.category,\n                \"file\": finding.file,\n                \"line\": finding.line,\n                \"fix\": finding.suggested_fix,\n            },\n            \"connected_concepts\": find_related_concepts(finding),\n        },\n        participants=pr_info.participants,\n        related_rooms=find_related_rooms(finding),\n        tags=extract_tags(finding),\n    )\n```\n\n## Post-Capture Actions\n\nAfter adding entry to palace:\n\n1. **Update bidirectional links** - Add backlinks from related entries\n2. **Refresh palace index** - Update tags and search index\n3. **Check for contradictions** - Alert if new entry conflicts with existing\n4. **Generate summary** - Report what was captured\n\n```python\ndef post_capture_actions(entry, palace):\n    \"\"\"Actions after successful capture.\"\"\"\n\n    # Add backlinks\n    for related in entry.related_rooms:\n        add_backlink(palace, related, entry.id)\n\n    # Check contradictions\n    contradictions = find_contradictions(entry, palace)\n    if contradictions:\n        alert_contradiction(entry, contradictions)\n\n    # Return summary\n    return {\n        \"entry_id\": entry.id,\n        \"room\": f\"review-chamber/{entry.room_type}\",\n        \"title\": entry.title,\n        \"tags\": entry.tags,\n        \"related\": entry.related_rooms,\n    }\n```\n\nFile v1.9.19:modules/evaluation-criteria.md\n\n# Evaluation Criteria Module\n\nDetailed criteria for evaluating whether PR review findings are worth capturing.\n\n## Evaluation Framework\n\nBased on memory-palace:knowledge-intake, adapted for PR reviews.\n\n### Scoring Summary\n\n| Criterion | Weight | Max Points |\n|-----------|--------|------------|\n| Novelty | 25% | 25 |\n| Applicability | 30% | 30 |\n| Durability | 20% | 20 |\n| Connectivity | 15% | 15 |\n| Authority | 10% | 10 |\n| **Total** | 100% | 100 |\n\n### Capture Thresholds\n\n| Score Range | Action |\n|-------------|--------|\n| 80-100 | **Evergreen**: Capture immediately, permanent retention |\n| 60-79 | **Valuable**: Capture, standard retention |\n| 40-59 | **Reference**: Consider manual capture |\n| 0-39 | **Skip**: Not worth capturing |\n\n## Detailed Criteria\n\n### 1. Novelty (25 points)\n\n**Question**: Is this knowledge new to the project?\n\n| Score | Description |\n|-------|-------------|\n| 25 | Completely novel - first time this pattern/decision documented |\n| 20 | Mostly novel - adds significant new context |\n| 15 | Moderate novelty - extends existing knowledge |\n| 10 | Low novelty - mostly overlaps with existing |\n| 5 | Minimal novelty - slight variation |\n| 0 | Duplicate - already captured |\n\n**Examples**:\n\n```markdown\n## High Novelty (25 points)\n- First authentication architecture decision\n- New error handling pattern for async code\n- Security vulnerability pattern not seen before\n\n## Moderate Novelty (15 points)\n- Alternative approach to existing pattern\n- Additional context for documented decision\n- Edge case for known pattern\n\n## Low/No Novelty (0-5 points)\n- Same bug found in different file\n- Style preference already in standards\n- Known limitation documented elsewhere\n```\n\n### 2. Applicability (30 points)\n\n**Question**: Will this affect future development?\n\n| Score | Description |\n|-------|-------------|\n| 30 | Core domain - affects all future work in area |\n| 25 | High applicability - affects most related PRs |\n| 20 | Moderate - affects some future work |\n| 15 | Limited - specific to few use cases |\n| 10 | Narrow - rarely applicable |\n| 0 | One-off - unique circumstance |\n\n**Indicators of High Applicability**:\n\n```markdown\n## High Applicability Signals\n- Affects shared/core code paths\n- Relates to API contracts\n- Security or performance critical\n- Multiple files/components affected\n- Frequently modified code area\n\n## Low Applicability Signals\n- One-off migration code\n- Deprecated feature\n- External dependency quirk\n- Test-only concern\n- Configuration edge case\n```\n\n### 3. Durability (20 points)\n\n**Question**: Is this architectural or tactical?\n\n| Score | Description |\n|-------|-------------|\n| 20 | Architectural - fundamental design choice |\n| 15 | Semi-permanent - likely to last years |\n| 10 | Medium-term - relevant for months |\n| 5 | Short-term - may change soon |\n| 0 | Tactical - temporary workaround |\n\n**Classification Guide**:\n\n```markdown\n## Architectural (20 points)\n- Technology choices (JWT vs sessions)\n- API design decisions\n- Data model structures\n- Security architecture\n- Performance strategies\n\n## Semi-permanent (15 points)\n- Coding conventions\n- Error handling patterns\n- Testing strategies\n- Documentation standards\n\n## Tactical (0-5 points)\n- Bug fixes without pattern\n- Formatting changes\n- Temporary workarounds\n- Dependency updates\n- Revert commits\n```\n\n### 4. Connectivity (15 points)\n\n**Question**: Does this link to other knowledge?\n\n| Score | Description |\n|-------|-------------|\n| 15 | Highly connected - links 3+ existing entries |\n| 10 | Connected - links 1-2 entries |\n| 5 | Potentially connected - could link to entries |\n| 0 | Isolated - standalone knowledge |\n\n**Connection Types**:\n\n```markdown\n## Strong Connections (15 points)\n- References existing ADR\n- Extends documented pattern\n- Contradicts (needs resolution!) existing entry\n- Builds on prior PR decision\n\n## Moderate Connections (10 points)\n- Related to existing topic\n- Same code area as prior entries\n- Similar category/tags\n\n## Weak/No Connections (0-5 points)\n- New domain area\n- No related entries exist\n- Standalone utility\n```\n\n### 5. Authority (10 points)\n\n**Question**: Who provided this knowledge?\n\n| Score | Description |\n|-------|-------------|\n| 10 | Domain expert and senior reviewer |\n| 7 | Domain expert OR senior reviewer |\n| 5 | Experienced team member |\n| 3 | Regular contributor |\n| 0 | Unknown/external |\n\n**Authority Signals**:\n\n```markdown\n## High Authority (10 points)\n- Code owner reviewed\n- Domain expert participated\n- Tech lead approved\n- Security team involved (for security findings)\n\n## Moderate Authority (5-7 points)\n- Experienced team member\n- Prior contributor to area\n- Cross-team reviewer\n\n## Lower Authority (0-3 points)\n- New team member (may still be valid!)\n- External contributor\n- Bot/automated review\n```\n\n## Special Cases\n\n### Always Capture\n\nSome findings should always be captured regardless of score:\n\n```markdown\n## Mandatory Capture\n- Security vulnerabilities with fix\n- Breaking API changes\n- Performance regression causes\n- Data loss scenarios\n- Production incident learnings\n```\n\n### Never Capture\n\nSome findings should never be captured:\n\n```markdown\n## Skip Always\n- Typo fixes\n- Import ordering\n- Whitespace changes\n- Dependency version bumps (unless significant)\n- Auto-formatter changes\n```\n\n### Human Override\n\nAllow manual override of scoring:\n\n```markdown\n## Force Capture\n/review-room capture 42 --force --room decisions\n# Captures even if score < 60\n\n## Force Skip\n/review-room capture 42 --skip \"duplicate of #38\"\n# Explicitly skip with reason\n```\n\n## Scoring Examples\n\n### Example 1: JWT Authentication Decision\n\n```yaml\nFinding:\n  title: \"Chose JWT over server-side sessions\"\n  severity: BLOCKING\n  category: security/architecture\n  context: \"Reviewer asked about sessions, author explained scaling needs\"\n\nScoring:\n  novelty: 25  # First auth architecture decision\n  applicability: 30  # Affects all auth code\n  durability: 20  # Architectural choice\n  connectivity: 10  # Links to security ADR\n  authority: 10  # Tech lead + security reviewer\n\nTotal: 95/100 → Capture to decisions/ (Evergreen)\n```\n\n### Example 2: Missing Null Check\n\n```yaml\nFinding:\n  title: \"Add null check before array access\"\n  severity: IN-SCOPE\n  category: bug\n  context: \"Could cause NPE in edge case\"\n\nScoring:\n  novelty: 5   # Common pattern\n  applicability: 10  # Specific function\n  durability: 5   # Tactical fix\n  connectivity: 0   # Isolated\n  authority: 5   # Regular reviewer\n\nTotal: 25/100 → Skip (tactical fix)\n```\n\n### Example 3: Error Response Pattern\n\n```yaml\nFinding:\n  title: \"Standardize API error response format\"\n  severity: IN-SCOPE\n  category: api/convention\n  context: \"Third time we've discussed this, let's document\"\n\nScoring:\n  novelty: 20  # Formalizing informal convention\n  applicability: 25  # All API endpoints\n  durability: 15  # Convention, may evolve\n  connectivity: 10  # Links to API docs\n  authority: 7   # Domain expert\n\nTotal: 77/100 → Capture to standards/ (Valuable)\n```\n\nFile v1.9.19:modules/search-patterns.md\n\n# Search Patterns Module\n\nPatterns for searching and retrieving knowledge from the review chamber.\n\n## Search Modalities\n\nThe review chamber supports multiple search approaches, building on knowledge-locator patterns.\n\n### 1. Semantic Search\n\nFind entries by meaning, not just keywords.\n\n```bash\n# Find decisions about authentication\n/review-room search \"how do we handle user authentication\" --type semantic\n\n# Returns entries about JWT, sessions, OAuth even if those exact words not used\n```\n\n**Implementation**:\n```python\ndef semantic_search(query, entries):\n    \"\"\"Search by meaning using embeddings or keyword expansion.\"\"\"\n\n    # Expand query with related terms\n    expanded = expand_query(query)\n    # \"authentication\" → [\"auth\", \"login\", \"session\", \"jwt\", \"oauth\"]\n\n    results = []\n    for entry in entries:\n        score = compute_semantic_similarity(expanded, entry.content)\n        if score > 0.3:  # Threshold\n            results.append((entry, score))\n\n    return sorted(results, key=lambda x: x[1], reverse=True)\n```\n\n### 2. Spatial Search\n\nNavigate by room and location in the palace.\n\n```bash\n# Browse decisions room\n/review-room list --room decisions\n\n# Find entries in patterns room with specific tags\n/review-room list --room patterns --tags api,error-handling\n```\n\n**Room Navigation**:\n```\nreview-chamber/\n├── decisions/     → Architectural choices\n│   └── jwt-auth.md\n│   └── api-versioning.md\n├── patterns/      → Recurring solutions\n│   └── retry-logic.md\n│   └── error-responses.md\n├── standards/     → Quality examples\n│   └── code-review-checklist.md\n└── lessons/       → Learnings\n    └── outage-2025-01.md\n```\n\n### 3. Temporal Search\n\nFind entries by time or PR timeline.\n\n```bash\n# Recent entries\n/review-room search --since \"2025-01-01\"\n\n# Entries from specific PR range\n/review-room search --pr-range 40-50\n\n# Most accessed entries\n/review-room search --sort-by access_count\n```\n\n### 4. Associative Search\n\nFollow connections between entries.\n\n```bash\n# Find entries related to specific entry\n/review-room related <entry_id>\n\n# Explore connection graph\n/review-room graph --start jwt-auth --depth 2\n```\n\n**Connection Types**:\n- `related_rooms` - Links to other palace rooms\n- `connected_concepts` - Bidirectional concept links\n- `source_pr` - Link back to GitHub PR\n- `tags` - Shared tag connections\n\n### 5. Contextual Search\n\nSurface relevant entries based on current work context.\n\n```bash\n# When in auth/ directory\n/review-room context auth/\n\n# Returns:\n# - Past decisions about authentication\n# - Known patterns in this code area\n# - Relevant standards to follow\n```\n\n## Search Filters\n\n### By Room Type\n\n```bash\n/review-room search \"query\" --room decisions\n/review-room search \"query\" --room patterns\n/review-room search \"query\" --room standards\n/review-room search \"query\" --room lessons\n```\n\n### By Tags\n\n```bash\n# Single tag\n/review-room search \"query\" --tags security\n\n# Multiple tags (AND)\n/review-room search \"query\" --tags security,api\n\n# Multiple tags (OR)\n/review-room search \"query\" --tags-any security,performance\n```\n\n### By Participants\n\n```bash\n# Entries from reviews by specific person\n/review-room search \"query\" --participant @username\n\n# Entries where specific reviewer participated\n/review-room search \"query\" --reviewer @techleader\n```\n\n### By Source PR\n\n```bash\n# From specific PR\n/review-room search --pr 42\n\n# From PR range\n/review-room search --pr-range 40-50\n```\n\n### By Time\n\n```bash\n# Since date\n/review-room search \"query\" --since 2025-01-01\n\n# Before date\n/review-room search \"query\" --before 2025-06-01\n\n# Date range\n/review-room search \"query\" --since 2025-01-01 --before 2025-06-01\n```\n\n## Proactive Surfacing\n\nAutomatically surface relevant knowledge at key moments.\n\n### On PR Creation\n\nWhen creating a PR in a code area with relevant history:\n\n```markdown\n## 📚 Relevant Review Knowledge\n\nYour PR touches files in `auth/`. Here's relevant knowledge:\n\n### Past Decisions\n| PR | Decision | Room |\n|----|----------|------|\n| #42 | JWT over sessions | decisions/jwt-auth |\n| #67 | Token refresh pattern | patterns/token-refresh |\n\n### Quality Standards\n- API error format: See standards/api-errors\n- Auth test coverage: See standards/auth-testing\n\n### Known Patterns\n- Token refresh race condition: patterns/token-refresh-race\n```\n\n### On Code Review\n\nWhen reviewing code in area with history:\n\n```markdown\n## 💡 Review Context\n\nThis PR modifies authentication code. Consider:\n\n### Prior Decisions\n- JWT tokens chosen for stateless scaling (#42)\n- Refresh tokens must be rotated (#67)\n\n### Common Issues\n- Token validation bypass (seen in #38)\n- Missing rate limiting (pattern #12)\n```\n\n### On Bug Investigation\n\nWhen investigating bugs in documented areas:\n\n```markdown\n## 🔍 Related Knowledge\n\nDebugging issue in auth flow. Review chamber has:\n\n### Lessons Learned\n- Outage from token expiry misconfiguration (lessons/auth-outage-2025)\n- Race condition in refresh (patterns/token-refresh-race)\n\n### Related Decisions\n- Why we use JWT: decisions/jwt-auth\n```\n\n## Search Result Format\n\n### Summary View (Default)\n\n```markdown\n## Search Results: \"authentication\"\n\nFound 5 entries in review-chamber:\n\n| Room | Title | PR | Date |\n|------|-------|-----|------|\n| decisions | JWT over sessions | #42 | 2025-01-15 |\n| patterns | Token refresh pattern | #67 | 2025-02-20 |\n| patterns | Rate limiting | #55 | 2025-01-28 |\n| standards | Auth testing | #48 | 2025-01-20 |\n| lessons | Token expiry outage | #89 | 2025-03-01 |\n```\n\n### Detail View\n\n```markdown\n## Entry: decisions/jwt-auth\n\n**Source PR:** #42 - Add user authentication\n**Date:** 2025-01-15\n**Participants:** @alice, @bob, @securityteam\n**Tags:** authentication, jwt, security, architecture\n\n### Decision\nChose JWT tokens over server-side sessions for stateless scaling.\n\n### Context\n- Reviewer asked about session persistence\n- Author explained horizontal scaling requirements\n- Security team approved with refresh token requirement\n\n### Captured Knowledge\n- **Pattern:** JWT + refresh tokens for stateless auth\n- **Tradeoff:** Complexity vs. horizontal scaling\n- **Application:** All API authentication\n\n### Connected\n- [[auth-patterns]] - Workshop patterns\n- [[security-adr-003]] - Library ADR\n- patterns/token-refresh - Related pattern\n```\n\n## CLI Integration\n\n### palace_manager.py Extension\n\n```bash\n# Search review chamber\npython scripts/palace_manager.py search \"authentication\" \\\n  --palace <project_id> \\\n  --room review-chamber \\\n  --subroom decisions \\\n  --type semantic\n\n# List with filters\npython scripts/palace_manager.py list-reviews \\\n  --palace <project_id> \\\n  --room patterns \\\n  --tags api \\\n  --since 2025-01-01\n\n# Export for documentation\npython scripts/palace_manager.py export-reviews \\\n  --palace <project_id> \\\n  --format markdown \\\n  --output docs/review-decisions.md\n```\n\n## Performance Considerations\n\n### Indexing\n\n```python\n# Maintain search indexes\n- Tag index: tag → [entry_ids]\n- Room index: room → [entry_ids]\n- Temporal index: date → [entry_ids]\n- Participant index: user → [entry_ids]\n- Embedding index: entry_id → vector (optional)\n```\n\n### Caching\n\n```python\n# Cache frequently accessed entries\n- LRU cache for recent searches\n- Pre-compute hot entry summaries\n- Background index updates\n```\n\n### Limits\n\n```python\n# Search result limits\nMAX_RESULTS = 50  # Per search\nMAX_DEPTH = 3     # For graph traversal\nTIMEOUT = 5000    # ms for search operations\n```\n\nFile v1.9.19:skill-card.md\n\n## Description:\n\nCaptures and retrieves PR-review findings in memory palaces for storing architectural decisions, patterns, and standards for future reference.\n\nThis skill is ready for commercial/non-commercial use.\n\n## Publisher:\n\n[athola](https://clawhub.ai/user/athola)\n\n### License/Terms of Use:\n\nMIT-0\n\n## Use Case:\n\nDevelopers and engineering teams use this skill after PR reviews to capture durable findings, classify them into review-chamber rooms, and retrieve relevant review knowledge during future work.\n\n### Deployment Geography for Use:\n\nGlobal\n\n## Known Risks and Mitigations:\n\nRisk: Untrusted PR findings or discussion context may be stored and resurfaced as institutional memory.\n\nMitigation: Require trusted review before permanent storage, preserve provenance for captured entries, and provide deletion or reapproval paths for stale or poisoned entries.\n\nRisk: Retained PR review context may later be treated as authoritative even when project standards have changed.\n\nMitigation: Periodically review captured entries, prune outdated records, and flag contradictions against existing memory-palace entries.\n\n## Reference(s):\n\n- [ClawHub Skill Page](https://clawhub.ai/athola/skills/nm-memory-palace-review-chamber)\n- [memory-palace homepage](https://github.com/athola/claude-night-market/tree/master/plugins/memory-palace)\n- [capture-workflow.md](artifact/modules/capture-workflow.md)\n- [evaluation-criteria.md](artifact/modules/evaluation-criteria.md)\n- [search-patterns.md](artifact/modules/search-patterns.md)\n\n## Skill Output:\n\n**Output Type(s):** [Guidance, Markdown, Shell commands, Configuration]\n\n**Output Format:** [Markdown with inline shell commands, YAML examples, and structured review-entry guidance]\n\n**Output Parameters:** [1D]\n\n**Other Properties Related to Output:** [May reference PR numbers, tags, palace rooms, and retained discussion context.]\n\n## Skill Version(s):\n\n1.9.19 (source: server release metadata; artifact frontmatter lists 1.9.8)\n\n## Ethical Considerations:\n\nUsers should evaluate whether this skill is appropriate for their environment, review any generated or modified files before relying on them, and apply their organization's safety, security, and compliance requirements before deployment.\n\nArchive v1.9.17: 6 files, 13594 bytes\n\nFiles: modules/capture-workflow.md (6668b), modules/evaluation-criteria.md (7010b), modules/search-patterns.md (7517b), skill-card.md (1967b), SKILL.md (9372b), _meta.json (151b)\n\nFile v1.9.17:SKILL.md\n\n---\nname: review-chamber\ndescription: |\n  Captures and retrieves PR-review findings in memory palaces. Use after PR review to store architectural decisions, patterns, and standards for future reference\nversion: 1.9.8\nmetadata: {\"openclaw\": {\"homepage\": \"https://github.com/athola/claude-night-market/tree/master/plugins/memory-palace\", \"emoji\": \"\\ud83e\\udd9e\", \"requires\": {\"config\": [\"night-market.memory-palace:knowledge-intake\", \"night-market.sanctum:pr-review\"]}}}\nsource: claude-night-market\nsource_plugin: memory-palace\n---\n\n> **Night Market Skill** — ported from [claude-night-market/memory-palace](https://github.com/athola/claude-night-market/tree/master/plugins/memory-palace). For the full experience with agents, hooks, and commands, install the Claude Code plugin.\n\n\n## Table of Contents\n\n- [Overview](#overview)\n- [Room Structure](#room-structure)\n- [Workflow Phases](#workflow-phases)\n- [Phase 1: Knowledge Detection](#phase-1:-knowledge-detection)\n- [Knowledge Detection Checklist](#knowledge-detection-checklist)\n- [Phase 2: Classification](#phase-2:-classification)\n- [Phase 3: Capture](#phase-3:-capture)\n- [Decision Title](#decision-title)\n- [Decision](#decision)\n- [Context (from PR discussion)](#context-(from-pr-discussion))\n- [Captured Knowledge](#captured-knowledge)\n- [Connected Concepts](#connected-concepts)\n- [Phase 4: Integration](#phase-4:-integration)\n- [Usage Examples](#usage-examples)\n- [Capture After PR Review](#capture-after-pr-review)\n- [Search Past Decisions](#search-past-decisions)\n- [Surface Relevant Knowledge](#surface-relevant-knowledge)\n- [Relevant Review Knowledge](#relevant-review-knowledge)\n- [Integration Points](#integration-points)\n- [With sanctum:pr-review](#with-sanctum:pr-review)\n- [With knowledge-intake](#with-knowledge-intake)\n- [With knowledge-locator](#with-knowledge-locator)\n- [Evaluation Rubric](#evaluation-rubric)\n- [Worth Capturing (Score ≥ 60)](#worth-capturing-(score-≥-60))\n- [Skip (Score < 60)](#skip-(score-<-60))\n- [CLI Reference](#cli-reference)\n- [Best Practices](#best-practices)\n\n\n# PR Review Chamber Skill\n\nCapture, organize, and retrieve knowledge from PR reviews within project memory palaces.\n\n\n## When To Use\n\n- Capturing PR review knowledge for future reference\n- Building review pattern libraries from past reviews\n\n## When NOT To Use\n\n- Quick self-reviews of trivial changes\n- Automated CI checks that cover the review scope\n\n## Overview\n\nThe 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.\n\n## Room Structure\n\n```\nreview-chamber/\n├── decisions/      # Architectural choices from PR discussions\n├── patterns/       # Recurring issues and their solutions\n├── standards/      # Quality bar examples and coding conventions\n└── lessons/        # Post-mortems and learnings\n```\n**Verification:** Run the command with `--help` flag to verify availability.\n\n## Workflow Phases\n\n### Phase 1: Knowledge Detection\n\nAfter a PR review completes, evaluate findings for knowledge capture:\n\n```markdown\n## Knowledge Detection Checklist\n\nFor each finding from sanctum:pr-review, evaluate:\n\n- [ ] **Novelty**: Is this a new pattern or first occurrence?\n- [ ] **Applicability**: Will this affect future PRs in this area?\n- [ ] **Durability**: Is this architectural (capture) or tactical (skip)?\n- [ ] **Connectivity**: Does it link to existing palace rooms?\n```\n**Verification:** Run the command with `--help` flag to verify availability.\n\n### Phase 2: Classification\n\nRoute findings to appropriate subrooms:\n\n| Finding Type | Target Room | Criteria |\n|-------------|-------------|----------|\n| Architectural choice | `decisions/` | BLOCKING and architectural context |\n| Recurring issue | `patterns/` | Seen before or likely to recur |\n| Quality example | `standards/` | Exemplifies coding standards |\n| Learning/insight | `lessons/` | Retrospective or post-mortem |\n\n### Phase 3: Capture\n\nCreate structured entry with:\n\n```yaml\n---\nsource_pr: \"#42 - Add authentication\"\ndate: 2025-01-15\nparticipants: [author, reviewer1, reviewer2]\npalace_location: review-chamber/decisions\nrelated_rooms: [workshop/auth-patterns, library/security-adr]\ntags: [authentication, jwt, security]\n---\n\n## Decision Title\n\n### Decision\nChose JWT tokens over server-side sessions.\n\n### Context (from PR discussion)\n- Reviewer asked: \"Why not use sessions?\"\n- Author explained: stateless scaling requirements\n- Discussion refined: added refresh token rotation\n\n### Captured Knowledge\n- **Pattern**: JWT + refresh tokens for stateless auth\n- **Tradeoff**: Complexity vs. horizontal scaling\n- **Application**: Use for all API authentication\n\n### Connected Concepts\n- [[auth-patterns]] - Updated with JWT best practices\n- [[security-adr-003]] - Referenced this decision\n```\n**Verification:** Run the command with `--help` flag to verify availability.\n\n### Phase 4: Integration\n\nAfter capture, update related palace rooms:\n\n1. Add bidirectional links to related entries\n2. Update tags in project palace index\n3. Notify if this contradicts existing entries\n\n## Usage Examples\n\n### Capture After PR Review\n\n```bash\n# Automatic: sanctum:pr-review triggers capture\n/pr-review 42\n# → Review posted to GitHub\n# → Knowledge capture evaluates findings\n# → Significant decisions stored in review-chamber\n\n# Manual: Explicitly capture from PR\n/review-room capture 42 --room decisions\n```\n**Verification:** Run the command with `--help` flag to verify availability.\n\n### Search Past Decisions\n\n```bash\n# Find authentication decisions\n/review-room search \"authentication\" --room decisions\n\n# Find patterns in a specific area\n/review-room search \"error handling\" --room patterns --tags api\n\n# List recent entries\n/review-room list --limit 10 --room standards\n```\n**Verification:** Run the command with `--help` flag to verify availability.\n\n### Surface Relevant Knowledge\n\nWhen starting work in a code area:\n\n```markdown\n## Relevant Review Knowledge\n\nStarting work in `auth/` directory...\n\n**Past Decisions:**\n- [#42] JWT token decision → decisions/jwt-over-sessions\n- [#67] Rate limiting pattern → patterns/api-throttling\n\n**Quality Standards:**\n- [#55] Error response format → standards/api-errors\n\n**Known Patterns:**\n- [#38] Token refresh edge case → patterns/token-refresh-race\n```\n**Verification:** Run the command with `--help` flag to verify availability.\n\n## Integration Points\n\n### With sanctum:pr-review\n\nThe review-chamber integrates after Phase 6 (Generate Report):\n\n```\n**Verification:** Run the command with `--help` flag to verify availability.\nPhase 6: Generate Report\n    ↓\n[HOOK] Evaluate findings for knowledge capture\n    ↓\n    For each significant finding:\n    ├── Classify into room type\n    ├── Create ReviewEntry\n    ├── Add to project palace\n    └── Update connections\n    ↓\nPhase 7: Post to GitHub\n```\n**Verification:** Run the command with `--help` flag to verify availability.\n\n### With knowledge-intake\n\nUses the same evaluation framework:\n\n| Criterion | Weight | PR Review Application |\n|-----------|--------|----------------------|\n| Novelty | 25% | New pattern or first occurrence |\n| Applicability | 30% | Affects future PRs in this area |\n| Durability | 20% | Architectural vs tactical |\n| Connectivity | 15% | Links to existing rooms |\n| Authority | 10% | Senior reviewer or domain expert |\n\n### With knowledge-locator\n\nExtends search to include review-chamber:\n\n```bash\npython scripts/palace_manager.py search \"authentication\" \\\n  --palace project-name \\\n  --room review-chamber \\\n  --type semantic\n```\n**Verification:** Run `python --version` to verify Python environment.\n\n## Evaluation Rubric\n\n### Worth Capturing (Score ≥ 60)\n\n- **Architectural decisions** with documented rationale\n- **Recurring patterns** seen in 2+ PRs\n- **Security/performance** critical findings\n- **Domain knowledge** that explains business logic\n- **Convention changes** that affect future code\n\n### Skip (Score < 60)\n\n- One-off tactical fixes\n- Style preferences without rationale\n- Obvious bugs without pattern\n- External dependency issues\n- Temporary workarounds\n\n## CLI Reference\n\n```bash\n# Capture knowledge from PR\n/review-room capture <pr_number> [--room <room_type>] [--tags <tags>]\n\n# Search review chamber\n/review-room search \"<query>\" [--room <room_type>] [--tags <tags>]\n\n# List entries\n/review-room list [--room <room_type>] [--limit N]\n\n# View entry details\n/review-room view <entry_id>\n\n# Export for documentation\n/review-room export [--format markdown|json] [--room <room_type>]\n\n# Statistics\n/review-room stats [--palace <palace_id>]\n```\n**Verification:** Run the command with `--help` flag to verify availability.\n\n## Best Practices\n\n1. **Capture decisions immediately** - Context is freshest right after review\n2. **Link related entries** - Build the knowledge graph\n3. **Use consistent tags** - Enable cross-project discovery\n4. **Review periodically** - Prune outdated entries\n5. **Surface proactively** - Show relevant knowledge when starting related work\n\n## Module Reference\n\n- See `modules/capture-workflow.md` for detailed capture process\n- See `modules/evaluation-criteria.md` for knowledge worth assessment\n- See `modules/search-patterns.md` for query optimization\n\nFile v1.9.17:_meta.json\n\n{\n  \"ownerId\": \"kn7d107jg9jv602h9ytsegydq184a42s\",\n  \"slug\": \"nm-memory-palace-review-chamber\",\n  \"version\": \"1.9.17\",\n  \"publishedAt\": 1785389858039\n}\n\nFile v1.9.17:modules/capture-workflow.md\n\n# Capture Workflow Module\n\nDetailed workflow for capturing PR review knowledge into the review chamber.\n\n## Trigger Points\n\nKnowledge capture can be triggered:\n\n1. **Automatically**: After `sanctum:pr-review` completes Phase 6\n2. **Manually**: Via `/review-room capture` command\n3. **Retroactively**: From existing PR review threads\n\n## Automatic Capture Flow\n\n```mermaid\ngraph TD\n    A[PR Review Completed] --> B{Has BLOCKING findings?}\n    B -->|Yes| C[Evaluate each finding]\n    B -->|No| D{Has IN-SCOPE findings?}\n    D -->|Yes| C\n    D -->|No| E[Skip capture]\n\n    C --> F{Score ≥ 60?}\n    F -->|Yes| G[Classify room type]\n    F -->|No| E\n\n    G --> H[Create ReviewEntry]\n    H --> I[Add to project palace]\n    I --> J[Update connections]\n    J --> K[Report captured entries]\n```\n\n## Finding Evaluation\n\nFor each PR finding, compute a capture score:\n\n### Novelty Check (25 points max)\n\n```python\ndef evaluate_novelty(finding, existing_entries):\n    \"\"\"Check if finding represents new knowledge.\"\"\"\n\n    # Search existing entries for similar content\n    similar = search_similar(finding.content, existing_entries)\n\n    if not similar:\n        return 25  # Completely novel\n\n    best_match = similar[0]\n    if best_match.similarity < 0.5:\n        return 20  # Mostly novel\n    elif best_match.similarity < 0.8:\n        return 10  # Partial overlap - may add context\n    else:\n        return 0   # Duplicate - skip\n```\n\n### Applicability Check (30 points max)\n\n```python\ndef evaluate_applicability(finding, project_context):\n    \"\"\"Estimate future relevance.\"\"\"\n\n    score = 0\n\n    # Affects common code paths\n    if finding.file in project_context.hot_paths:\n        score += 15\n\n    # Relates to core domain\n    if finding.category in project_context.core_domains:\n        score += 10\n\n    # Has broad applicability\n    if len(finding.affected_files) > 3:\n        score += 5\n\n    return min(30, score)\n```\n\n### Durability Check (20 points max)\n\n```python\ndef evaluate_durability(finding):\n    \"\"\"Distinguish architectural from tactical.\"\"\"\n\n    # Architectural indicators\n    architectural_keywords = [\n        'architecture', 'design', 'pattern', 'convention',\n        'security', 'performance', 'scalability', 'api'\n    ]\n\n    # Tactical indicators\n    tactical_keywords = [\n        'typo', 'formatting', 'temporary', 'workaround',\n        'quick fix', 'hotfix', 'revert'\n    ]\n\n    content_lower = finding.content.lower()\n\n    arch_matches = sum(1 for k in architectural_keywords if k in content_lower)\n    tact_matches = sum(1 for k in tactical_keywords if k in content_lower)\n\n    if arch_matches > tact_matches:\n        return 20  # Architectural\n    elif arch_matches == tact_matches:\n        return 10  # Mixed\n    else:\n        return 0   # Tactical - skip\n```\n\n### Connectivity Check (15 points max)\n\n```python\ndef evaluate_connectivity(finding, palace):\n    \"\"\"Check links to existing knowledge.\"\"\"\n\n    score = 0\n\n    # Links to existing ADRs\n    if finding.references_adr:\n        score += 5\n\n    # Links to workshop patterns\n    if finding.references_pattern:\n        score += 5\n\n    # Would create new connections\n    potential_links = find_potential_links(finding, palace)\n    if len(potential_links) > 2:\n        score += 5\n\n    return score\n```\n\n### Authority Check (10 points max)\n\n```python\ndef evaluate_authority(finding, participants):\n    \"\"\"Weight by reviewer expertise.\"\"\"\n\n    score = 0\n\n    # Senior reviewer involved\n    if any(is_senior(p) for p in participants):\n        score += 5\n\n    # Domain expert reviewed\n    domain = extract_domain(finding)\n    if any(is_domain_expert(p, domain) for p in participants):\n        score += 5\n\n    return score\n```\n\n## Room Classification Logic\n\nAfter evaluation, classify into appropriate room:\n\n```python\ndef classify_finding(finding, score):\n    \"\"\"Determine target room for finding.\"\"\"\n\n    if score < 60:\n        return None  # Don't capture\n\n    severity = finding.severity\n    category = finding.category.lower()\n\n    # Decisions: Architectural choices with rationale\n    if severity == \"BLOCKING\" and any(k in category for k in [\n        'architecture', 'design', 'security', 'api'\n    ]):\n        return \"decisions\"\n\n    # Patterns: Recurring issues or solutions\n    if is_recurring(finding) or any(k in category for k in [\n        'pattern', 'recurring', 'common', 'best-practice'\n    ]):\n        return \"patterns\"\n\n    # Standards: Quality examples\n    if any(k in category for k in [\n        'quality', 'style', 'convention', 'standard'\n    ]):\n        return \"standards\"\n\n    # Lessons: Retrospective insights\n    if any(k in category for k in [\n        'lesson', 'learning', 'retrospective', 'insight'\n    ]):\n        return \"lessons\"\n\n    # Default: High-severity findings as patterns\n    if severity == \"BLOCKING\":\n        return \"patterns\"\n\n    return None\n```\n\n## Entry Creation\n\nCreate structured entry from finding:\n\n```python\ndef create_review_entry(finding, pr_info, room_type):\n    \"\"\"Create ReviewEntry from finding.\"\"\"\n\n    return ReviewEntry(\n        source_pr=f\"#{pr_info.number} - {pr_info.title}\",\n        title=finding.title,\n        room_type=room_type,\n        content={\n            \"decision\": finding.description,\n            \"context\": extract_discussion_context(finding),\n            \"captured_knowledge\": {\n                \"severity\": finding.severity,\n                \"category\": finding.category,\n                \"file\": finding.file,\n                \"line\": finding.line,\n                \"fix\": finding.suggested_fix,\n            },\n            \"connected_concepts\": find_related_concepts(finding),\n        },\n        participants=pr_info.participants,\n        related_rooms=find_related_rooms(finding),\n        tags=extract_tags(finding),\n    )\n```\n\n## Post-Capture Actions\n\nAfter adding entry to palace:\n\n1. **Update bidirectional links** - Add backlinks from related entries\n2. **Refresh palace index** - Update tags and search index\n3. **Check for contradictions** - Alert if new entry conflicts with existing\n4. **Generate summary** - Report what was captured\n\n```python\ndef post_capture_actions(entry, palace):\n    \"\"\"Actions after successful capture.\"\"\"\n\n    # Add backlinks\n    for related in entry.related_rooms:\n        add_backlink(palace, related, entry.id)\n\n    # Check contradictions\n    contradictions = find_contradictions(entry, palace)\n    if contradictions:\n        alert_contradiction(entry, contradictions)\n\n    # Return summary\n    return {\n        \"entry_id\": entry.id,\n        \"room\": f\"review-chamber/{entry.room_type}\",\n        \"title\": entry.title,\n        \"tags\": entry.tags,\n        \"related\": entry.related_rooms,\n    }\n```\n\nFile v1.9.17:modules/evaluation-criteria.md\n\n# Evaluation Criteria Module\n\nDetailed criteria for evaluating whether PR review findings are worth capturing.\n\n## Evaluation Framework\n\nBased on memory-palace:knowledge-intake, adapted for PR reviews.\n\n### Scoring Summary\n\n| Criterion | Weight | Max Points |\n|-----------|--------|------------|\n| Novelty | 25% | 25 |\n| Applicability | 30% | 30 |\n| Durability | 20% | 20 |\n| Connectivity | 15% | 15 |\n| Authority | 10% | 10 |\n| **Total** | 100% | 100 |\n\n### Capture Thresholds\n\n| Score Range | Action |\n|-------------|--------|\n| 80-100 | **Evergreen**: Capture immediately, permanent retention |\n| 60-79 | **Valuable**: Capture, standard retention |\n| 40-59 | **Reference**: Consider manual capture |\n| 0-39 | **Skip**: Not worth capturing |\n\n## Detailed Criteria\n\n### 1. Novelty (25 points)\n\n**Question**: Is this knowledge new to the project?\n\n| Score | Description |\n|-------|-------------|\n| 25 | Completely novel - first time this pattern/decision documented |\n| 20 | Mostly novel - adds significant new context |\n| 15 | Moderate novelty - extends existing knowledge |\n| 10 | Low novelty - mostly overlaps with existing |\n| 5 | Minimal novelty - slight variation |\n| 0 | Duplicate - already captured |\n\n**Examples**:\n\n```markdown\n## High Novelty (25 points)\n- First authentication architecture decision\n- New error handling pattern for async code\n- Security vulnerability pattern not seen before\n\n## Moderate Novelty (15 points)\n- Alternative approach to existing pattern\n- Additional context for documented decision\n- Edge case for known pattern\n\n## Low/No Novelty (0-5 points)\n- Same bug found in different file\n- Style preference already in standards\n- Known limitation documented elsewhere\n```\n\n### 2. Applicability (30 points)\n\n**Question**: Will this affect future development?\n\n| Score | Description |\n|-------|-------------|\n| 30 | Core domain - affects all future work in area |\n| 25 | High applicability - affects most related PRs |\n| 20 | Moderate - affects some future work |\n| 15 | Limited - specific to few use cases |\n| 10 | Narrow - rarely applicable |\n| 0 | One-off - unique circumstance |\n\n**Indicators of High Applicability**:\n\n```markdown\n## High Applicability Signals\n- Affects shared/core code paths\n- Relates to API contracts\n- Security or performance critical\n- Multiple files/components affected\n- Frequently modified code area\n\n## Low Applicability Signals\n- One-off migration code\n- Deprecated feature\n- External dependency quirk\n- Test-only concern\n- Configuration edge case\n```\n\n### 3. Durability (20 points)\n\n**Question**: Is this architectural or tactical?\n\n| Score | Description |\n|-------|-------------|\n| 20 | Architectural - fundamental design choice |\n| 15 | Semi-permanent - likely to last years |\n| 10 | Medium-term - relevant for months |\n| 5 | Short-term - may change soon |\n| 0 | Tactical - temporary workaround |\n\n**Classification Guide**:\n\n```markdown\n## Architectural (20 points)\n- Technology choices (JWT vs sessions)\n- API design decisions\n- Data model structures\n- Security architecture\n- Performance strategies\n\n## Semi-permanent (15 points)\n- Coding conventions\n- Error handling patterns\n- Testing strategies\n- Documentation standards\n\n## Tactical (0-5 points)\n- Bug fixes without pattern\n- Formatting changes\n- Temporary workarounds\n- Dependency updates\n- Revert commits\n```\n\n### 4. Connectivity (15 points)\n\n**Question**: Does this link to other knowledge?\n\n| Score | Description |\n|-------|-------------|\n| 15 | Highly connected - links 3+ existing entries |\n| 10 | Connected - links 1-2 entries |\n| 5 | Potentially connected - could link to entries |\n| 0 | Isolated - standalone knowledge |\n\n**Connection Types**:\n\n```markdown\n## Strong Connections (15 points)\n- References existing ADR\n- Extends documented pattern\n- Contradicts (needs resolution!) existing entry\n- Builds on prior PR decision\n\n## Moderate Connections (10 points)\n- Related to existing topic\n- Same code area as prior entries\n- Similar category/tags\n\n## Weak/No Connections (0-5 points)\n- New domain area\n- No related entries exist\n- Standalone utility\n```\n\n### 5. Authority (10 points)\n\n**Question**: Who provided this knowledge?\n\n| Score | Description |\n|-------|-------------|\n| 10 | Domain expert and senior reviewer |\n| 7 | Domain expert OR senior reviewer |\n| 5 | Experienced team member |\n| 3 | Regular contributor |\n| 0 | Unknown/external |\n\n**Authority Signals**:\n\n```markdown\n## High Authority (10 points)\n- Code owner reviewed\n- Domain expert participated\n- Tech lead approved\n- Security team involved (for security findings)\n\n## Moderate Authority (5-7 points)\n- Experienced team member\n- Prior contributor to area\n- Cross-team reviewer\n\n## Lower Authority (0-3 points)\n- New team member (may still be valid!)\n- External contributor\n- Bot/automated review\n```\n\n## Special Cases\n\n### Always Capture\n\nSome findings should always be captured regardless of score:\n\n```markdown\n## Mandatory Capture\n- Security vulnerabilities with fix\n- Breaking API changes\n- Performance regression causes\n- Data loss scenarios\n- Production incident learnings\n```\n\n### Never Capture\n\nSome findings should never be captured:\n\n```markdown\n## Skip Always\n- Typo fixes\n- Import ordering\n- Whitespace changes\n- Dependency version bumps (unless significant)\n- Auto-formatter changes\n```\n\n### Human Override\n\nAllow manual override of scoring:\n\n```markdown\n## Force Capture\n/review-room capture 42 --force --room decisions\n# Captures even if score < 60\n\n## Force Skip\n/review-room capture 42 --skip \"duplicate of #38\"\n# Explicitly skip with reason\n```\n\n## Scoring Examples\n\n### Example 1: JWT Authentication Decision\n\n```yaml\nFinding:\n  title: \"Chose JWT over server-side sessions\"\n  severity: BLOCKING\n  category: security/architecture\n  context: \"Reviewer asked about sessions, author explained scaling needs\"\n\nScoring:\n  novelty: 25  # First auth architecture decision\n  applicability: 30  # Affects all auth code\n  durability: 20  # Architectural choice\n  connectivity: 10  # Links to security ADR\n  authority: 10  # Tech lead + security reviewer\n\nTotal: 95/100 → Capture to decisions/ (Evergreen)\n```\n\n### Example 2: Missing Null Check\n\n```yaml\nFinding:\n  title: \"Add null check before array access\"\n  severity: IN-SCOPE\n  category: bug\n  context: \"Could cause NPE in edge case\"\n\nScoring:\n  novelty: 5   # Common pattern\n  applicability: 10  # Specific function\n  durability: 5   # Tactical fix\n  connectivity: 0   # Isolated\n  authority: 5   # Regular reviewer\n\nTotal: 25/100 → Skip (tactical fix)\n```\n\n### Example 3: Error Response Pattern\n\n```yaml\nFinding:\n  title: \"Standardize API error response format\"\n  severity: IN-SCOPE\n  category: api/convention\n  context: \"Third time we've discussed this, let's document\"\n\nScoring:\n  novelty: 20  # Formalizing informal convention\n  applicability: 25  # All API endpoints\n  durability: 15  # Convention, may evolve\n  connectivity: 10  # Links to API docs\n  authority: 7   # Domain expert\n\nTotal: 77/100 → Capture to standards/ (Valuable)\n```\n\nFile v1.9.17:modules/search-patterns.md\n\n# Search Patterns Module\n\nPatterns for searching and retrieving knowledge from the review chamber.\n\n## Search Modalities\n\nThe review chamber supports multiple search approaches, building on knowledge-locator patterns.\n\n### 1. Semantic Search\n\nFind entries by meaning, not just keywords.\n\n```bash\n# Find decisions about authentication\n/review-room search \"how do we handle user authentication\" --type semantic\n\n# Returns entries about JWT, sessions, OAuth even if those exact words not used\n```\n\n**Implementation**:\n```python\ndef semantic_search(query, entries):\n    \"\"\"Search by meaning using embeddings or keyword expansion.\"\"\"\n\n    # Expand query with related terms\n    expanded = expand_query(query)\n    # \"authentication\" → [\"auth\", \"login\", \"session\", \"jwt\", \"oauth\"]\n\n    results = []\n    for entry in entries:\n        score = compute_semantic_similarity(expanded, entry.content)\n        if score > 0.3:  # Threshold\n            results.append((entry, score))\n\n    return sorted(results, key=lambda x: x[1], reverse=True)\n```\n\n### 2. Spatial Search\n\nNavigate by room and location in the palace.\n\n```bash\n# Browse decisions room\n/review-room list --room decisions\n\n# Find entries in patterns room with specific tags\n/review-room list --room patterns --tags api,error-handling\n```\n\n**Room Navigation**:\n```\nreview-chamber/\n├── decisions/     → Architectural choices\n│   └── jwt-auth.md\n│   └── api-versioning.md\n├── patterns/      → Recurring solutions\n│   └── retry-logic.md\n│   └── error-responses.md\n├── standards/     → Quality examples\n│   └── code-review-checklist.md\n└── lessons/       → Learnings\n    └── outage-2025-01.md\n```\n\n### 3. Temporal Search\n\nFind entries by time or PR timeline.\n\n```bash\n# Recent entries\n/review-room search --since \"2025-01-01\"\n\n# Entries from specific PR range\n/review-room search --pr-range 40-50\n\n# Most accessed entries\n/review-room search --sort-by access_count\n```\n\n### 4. Associative Search\n\nFollow connections between entries.\n\n```bash\n# Find entries related to specific entry\n/review-room related <entry_id>\n\n# Explore connection graph\n/review-room graph --start jwt-auth --depth 2\n```\n\n**Connection Types**:\n- `related_rooms` - Links to other palace rooms\n- `connected_concepts` - Bidirectional concept links\n- `source_pr` - Link back to GitHub PR\n- `tags` - Shared tag connections\n\n### 5. Contextual Search\n\nSurface relevant entries based on current work context.\n\n```bash\n# When in auth/ directory\n/review-room context auth/\n\n# Returns:\n# - Past decisions about authentication\n# - Known patterns in this code area\n# - Relevant standards to follow\n```\n\n## Search Filters\n\n### By Room Type\n\n```bash\n/review-room search \"query\" --room decisions\n/review-room search \"query\" --room patterns\n/review-room search \"query\" --room standards\n/review-room search \"query\" --room lessons\n```\n\n### By Tags\n\n```bash\n# Single tag\n/review-room search \"query\" --tags security\n\n# Multiple tags (AND)\n/review-room search \"query\" --tags security,api\n\n# Multiple tags (OR)\n/review-room search \"query\" --tags-any security,performance\n```\n\n### By Participants\n\n```bash\n# Entries from reviews by specific person\n/review-room search \"query\" --participant @username\n\n# Entries where specific reviewer participated\n/review-room search \"query\" --reviewer @techleader\n```\n\n### By Source PR\n\n```bash\n# From specific PR\n/review-room search --pr 42\n\n# From PR range\n/review-room search --pr-range 40-50\n```\n\n### By Time\n\n```bash\n# Since date\n/review-room search \"query\" --since 2025-01-01\n\n# Before date\n/review-room search \"query\" --before 2025-06-01\n\n# Date range\n/review-room search \"query\" --since 2025-01-01 --before 2025-06-01\n```\n\n## Proactive Surfacing\n\nAutomatically surface relevant knowledge at key moments.\n\n### On PR Creation\n\nWhen creating a PR in a code area with relevant history:\n\n```markdown\n## 📚 Relevant Review Knowledge\n\nYour PR touches files in `auth/`. Here's relevant knowledge:\n\n### Past Decisions\n| PR | Decision | Room |\n|----|----------|------|\n| #42 | JWT over sessions | decisions/jwt-auth |\n| #67 | Token refresh pattern | patterns/token-refresh |\n\n### Quality Standards\n- API error format: See standards/api-errors\n- Auth test coverage: See standards/auth-testing\n\n### Known Patterns\n- Token refresh race condition: patterns/token-refresh-race\n```\n\n### On Code Review\n\nWhen reviewing code in area with history:\n\n```markdown\n## 💡 Review Context\n\nThis PR modifies authentication code. Consider:\n\n### Prior Decisions\n- JWT tokens chosen for stateless scaling (#42)\n- Refresh tokens must be rotated (#67)\n\n### Common Issues\n- Token validation bypass (seen in #38)\n- Missing rate limiting (pattern #12)\n```\n\n### On Bug Investigation\n\nWhen investigating bugs in documented areas:\n\n```markdown\n## 🔍 Related Knowledge\n\nDebugging issue in auth flow. Review chamber has:\n\n### Lessons Learned\n- Outage from token expiry misconfiguration (lessons/auth-outage-2025)\n- Race condition in refresh (patterns/token-refresh-race)\n\n### Related Decisions\n- Why we use JWT: decisions/jwt-auth\n```\n\n## Search Result Format\n\n### Summary View (Default)\n\n```markdown\n## Search Results: \"authentication\"\n\nFound 5 entries in review-chamber:\n\n| Room | Title | PR | Date |\n|------|-------|-----|------|\n| decisions | JWT over sessions | #42 | 2025-01-15 |\n| patterns | Token refresh pattern | #67 | 2025-02-20 |\n| patterns | Rate limiting | #55 | 2025-01-28 |\n| standards | Auth testing | #48 | 2025-01-20 |\n| lessons | Token expiry outage | #89 | 2025-03-01 |\n```\n\n### Detail View\n\n```markdown\n## Entry: decisions/jwt-auth\n\n**Source PR:** #42 - Add user authentication\n**Date:** 2025-01-15\n**Participants:** @alice, @bob, @securityteam\n**Tags:** authentication, jwt, security, architecture\n\n### Decision\nChose JWT tokens over server-side sessions for stateless scaling.\n\n### Context\n- Reviewer asked about session persistence\n- Author explained horizontal scaling requirements\n- Security team approved with refresh token requirement\n\n### Captured Knowledge\n- **Pattern:** JWT + refresh tokens for stateless auth\n- **Tradeoff:** Complexity vs. horizontal scaling\n- **Application:** All API authentication\n\n### Connected\n- [[auth-patterns]] - Workshop patterns\n- [[security-adr-003]] - Library ADR\n- patterns/token-refresh - Related pattern\n```\n\n## CLI Integration\n\n### palace_manager.py Extension\n\n```bash\n# Search review chamber\npython scripts/palace_manager.py search \"authentication\" \\\n  --palace <project_id> \\\n  --room review-chamber \\\n  --subroom decisions \\\n  --type semantic\n\n# List with filters\npython scripts/palace_manager.py list-reviews \\\n  --palace <project_id> \\\n  --room patterns \\\n  --tags api \\\n  --since 2025-01-01\n\n# Export for documentation\npython scripts/palace_manager.py export-reviews \\\n  --palace <project_id> \\\n  --format markdown \\\n  --output docs/review-decisions.md\n```\n\n## Performance Considerations\n\n### Indexing\n\n```python\n# Maintain search indexes\n- Tag index: tag → [entry_ids]\n- Room index: room → [entry_ids]\n- Temporal index: date → [entry_ids]\n- Participant index: user → [entry_ids]\n- Embedding index: entry_id → vector (optional)\n```\n\n### Caching\n\n```python\n# Cache frequently accessed entries\n- LRU cache for recent searches\n- Pre-compute hot entry summaries\n- Background index updates\n```\n\n### Limits\n\n```python\n# Search result limits\nMAX_RESULTS = 50  # Per search\nMAX_DEPTH = 3     # For graph traversal\nTIMEOUT = 5000    # ms for search operations\n```\n\nFile v1.9.17:skill-card.md\n\n## Description: <br>\nCaptures and retrieves PR-review findings in memory palaces for future architectural decisions, patterns, standards, and lessons. <br>\n\nThis skill is ready for commercial/non-commercial use. <br>\n\n## Publisher: <br>\n[athola](https://clawhub.ai/user/athola) <br>\n\n### License/Terms of Use: <br>\nMIT-0 <br>\n\n\n## Use Case: <br>\nDevelopers and engineering teams use this skill after PR reviews to capture durable review findings, classify them into project memory rooms, and retrieve relevant past decisions during future work. <br>\n\n### Deployment Geography for Use: <br>\nGlobal <br>\n\n## Known Risks and Mitigations: <br>\nRisk: The skill can persist private PR review context, including participant names, file references, findings, and architectural decisions. <br>\nMitigation: Use it only in projects where searchable retention of that review context is acceptable; define retroactive-capture rules and periodically prune outdated or confidential entries. <br>\n\n\n## Reference(s): <br>\n- [ClawHub skill page](https://clawhub.ai/athola/skills/nm-memory-palace-review-chamber) <br>\n- [OpenClaw homepage](https://github.com/athola/claude-night-market/tree/master/plugins/memory-palace) <br>\n\n\n## Skill Output: <br>\n**Output Type(s):** [text, markdown, code, shell commands, configuration, guidance] <br>\n**Output Format:** [Markdown with structured examples, command snippets, and configuration guidance] <br>\n**Output Parameters:** [1D] <br>\n**Other Properties Related to Output:** [Produces review-memory capture and retrieval guidance for an agent; does not itself execute repository changes.] <br>\n\n## Skill Version(s): <br>\n1.9.17 (source: server release evidence) <br>\n\n## Ethical Considerations: <br>\nUsers should evaluate whether this skill is appropriate for their environment, review any generated or modified files before relying on them, and apply their organization's safety, security, and compliance requirements before deployment. <br>\n\nArchive v1.9.16: 6 files, 13537 bytes\n\nFiles: modules/capture-workflow.md (6668b), modules/evaluation-criteria.md (7010b), modules/search-patterns.md (7517b), skill-card.md (1854b), SKILL.md (9372b), _meta.json (151b)\n\nFile v1.9.16:SKILL.md\n\n---\nname: review-chamber\ndescription: |\n  Captures and retrieves PR-review findings in memory palaces. Use after PR review to store architectural decisions, patterns, and standards for future reference\nversion: 1.9.8\nmetadata: {\"openclaw\": {\"homepage\": \"https://github.com/athola/claude-night-market/tree/master/plugins/memory-palace\", \"emoji\": \"\\ud83e\\udd9e\", \"requires\": {\"config\": [\"night-market.memory-palace:knowledge-intake\", \"night-market.sanctum:pr-review\"]}}}\nsource: claude-night-market\nsource_plugin: memory-palace\n---\n\n> **Night Market Skill** — ported from [claude-night-market/memory-palace](https://github.com/athola/claude-night-market/tree/master/plugins/memory-palace). For the full experience with agents, hooks, and commands, install the Claude Code plugin.\n\n\n## Table of Contents\n\n- [Overview](#overview)\n- [Room Structure](#room-structure)\n- [Workflow Phases](#workflow-phases)\n- [Phase 1: Knowledge Detection](#phase-1:-knowledge-detection)\n- [Knowledge Detection Checklist](#knowledge-detection-checklist)\n- [Phase 2: Classification](#phase-2:-classification)\n- [Phase 3: Capture](#phase-3:-capture)\n- [Decision Title](#decision-title)\n- [Decision](#decision)\n- [Context (from PR discussion)](#context-(from-pr-discussion))\n- [Captured Knowledge](#captured-knowledge)\n- [Connected Concepts](#connected-concepts)\n- [Phase 4: Integration](#phase-4:-integration)\n- [Usage Examples](#usage-examples)\n- [Capture After PR Review](#capture-after-pr-review)\n- [Search Past Decisions](#search-past-decisions)\n- [Surface Relevant Knowledge](#surface-relevant-knowledge)\n- [Relevant Review Knowledge](#relevant-review-knowledge)\n- [Integration Points](#integration-points)\n- [With sanctum:pr-review](#with-sanctum:pr-review)\n- [With knowledge-intake](#with-knowledge-intake)\n- [With knowledge-locator](#with-knowledge-locator)\n- [Evaluation Rubric](#evaluation-rubric)\n- [Worth Capturing (Score ≥ 60)](#worth-capturing-(score-≥-60))\n- [Skip (Score < 60)](#skip-(score-<-60))\n- [CLI Reference](#cli-reference)\n- [Best Practices](#best-practices)\n\n\n# PR Review Chamber Skill\n\nCapture, organize, and retrieve knowledge from PR reviews within project memory palaces.\n\n\n## When To Use\n\n- Capturing PR review knowledge for future reference\n- Building review pattern libraries from past reviews\n\n## When NOT To Use\n\n- Quick self-reviews of trivial changes\n- Automated CI checks that cover the review scope\n\n## Overview\n\nThe 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.\n\n## Room Structure\n\n```\nreview-chamber/\n├── decisions/      # Architectural choices from PR discussions\n├── patterns/       # Recurring issues and their solutions\n├── standards/      # Quality bar examples and coding conventions\n└── lessons/        # Post-mortems and learnings\n```\n**Verification:** Run the command with `--help` flag to verify availability.\n\n## Workflow Phases\n\n### Phase 1: Knowledge Detection\n\nAfter a PR review completes, evaluate findings for knowledge capture:\n\n```markdown\n## Knowledge Detection Checklist\n\nFor each finding from sanctum:pr-review, evaluate:\n\n- [ ] **Novelty**: Is this a new pattern or first occurrence?\n- [ ] **Applicability**: Will this affect future PRs in this area?\n- [ ] **Durability**: Is this architectural (capture) or tactical (skip)?\n- [ ] **Connectivity**: Does it link to existing palace rooms?\n```\n**Verification:** Run the command with `--help` flag to verify availability.\n\n### Phase 2: Classification\n\nRoute findings to appropriate subrooms:\n\n| Finding Type | Target Room | Criteria |\n|-------------|-------------|----------|\n| Architectural choice | `decisions/` | BLOCKING and architectural context |\n| Recurring issue | `patterns/` | Seen before or likely to recur |\n| Quality example | `standards/` | Exemplifies coding standards |\n| Learning/insight | `lessons/` | Retrospective or post-mortem |\n\n### Phase 3: Capture\n\nCreate structured entry with:\n\n```yaml\n---\nsource_pr: \"#42 - Add authentication\"\ndate: 2025-01-15\nparticipants: [author, reviewer1, reviewer2]\npalace_location: review-chamber/decisions\nrelated_rooms: [workshop/auth-patterns, library/security-adr]\ntags: [authentication, jwt, security]\n---\n\n## Decision Title\n\n### Decision\nChose JWT tokens over server-side sessions.\n\n### Context (from PR discussion)\n- Reviewer asked: \"Why not use sessions?\"\n- Author explained: stateless scaling requirements\n- Discussion refined: added refresh token rotation\n\n### Captured Knowledge\n- **Pattern**: JWT + refresh tokens for stateless auth\n- **Tradeoff**: Complexity vs. horizontal scaling\n- **Application**: Use for all API authentication\n\n### Connected Concepts\n- [[auth-patterns]] - Updated with JWT best practices\n- [[security-adr-003]] - Referenced this decision\n```\n**Verification:** Run the command with `--help` flag to verify availability.\n\n### Phase 4: Integration\n\nAfter capture, update related palace rooms:\n\n1. Add bidirectional links to related entries\n2. Update tags in project palace index\n3. Notify if this contradicts existing entries\n\n## Usage Examples\n\n### Capture After PR Review\n\n```bash\n# Automatic: sanctum:pr-review triggers capture\n/pr-review 42\n# → Review posted to GitHub\n# → Knowledge capture evaluates findings\n# → Significant decisions stored in review-chamber\n\n# Manual: Explicitly capture from PR\n/review-room capture 42 --room decisions\n```\n**Verification:** Run the command with `--help` flag to verify availability.\n\n### Search Past Decisions\n\n```bash\n# Find authentication decisions\n/review-room search \"authentication\" --room decisions\n\n# Find patterns in a specific area\n/review-room search \"error handling\" --room patterns --tags api\n\n# List recent entries\n/review-room list --limit 10 --room standards\n```\n**Verification:** Run the command with `--help` flag to verify availability.\n\n### Surface Relevant Knowledge\n\nWhen starting work in a code area:\n\n```markdown\n## Relevant Review Knowledge\n\nStarting work in `auth/` directory...\n\n**Past Decisions:**\n- [#42] JWT token decision → decisions/jwt-over-sessions\n- [#67] Rate limiting pattern → patterns/api-throttling\n\n**Quality Standards:**\n- [#55] Error response format → standards/api-errors\n\n**Known Patterns:**\n- [#38] Token refresh edge case → patterns/token-refresh-race\n```\n**Verification:** Run the command with `--help` flag to verify availability.\n\n## Integration Points\n\n### With sanctum:pr-review\n\nThe review-chamber integrates after Phase 6 (Generate Report):\n\n```\n**Verification:** Run the command with `--help` flag to verify availability.\nPhase 6: Generate Report\n    ↓\n[HOOK] Evaluate findings for knowledge capture\n    ↓\n    For each significant finding:\n    ├── Classify into room type\n    ├── Create ReviewEntry\n    ├── Add to project palace\n    └── Update connections\n    ↓\nPhase 7: Post to GitHub\n```\n**Verification:** Run the command with `--help` flag to verify availability.\n\n### With knowledge-intake\n\nUses the same evaluation framework:\n\n| Criterion | Weight | PR Review Application |\n|-----------|--------|----------------------|\n| Novelty | 25% | New pattern or first occurrence |\n| Applicability | 30% | Affects future PRs in this area |\n| Durability | 20% | Architectural vs tactical |\n| Connectivity | 15% | Links to existing rooms |\n| Authority | 10% | Senior reviewer or domain expert |\n\n### With knowledge-locator\n\nExtends search to include review-chamber:\n\n```bash\npython scripts/palace_manager.py search \"authentication\" \\\n  --palace project-name \\\n  --room review-chamber \\\n  --type semantic\n```\n**Verification:** Run `python --version` to verify Python environment.\n\n## Evaluation Rubric\n\n### Worth Capturing (Score ≥ 60)\n\n- **Architectural decisions** with documented rationale\n- **Recurring patterns** seen in 2+ PRs\n- **Security/performance** critical findings\n- **Domain knowledge** that explains business logic\n- **Convention changes** that affect future code\n\n### Skip (Score < 60)\n\n- One-off tactical fixes\n- Style preferences without rationale\n- Obvious bugs without pattern\n- External dependency issues\n- Temporary workarounds\n\n## CLI Reference\n\n```bash\n# Capture knowledge from PR\n/review-room capture <pr_number> [--room <room_type>] [--tags <tags>]\n\n# Search review chamber\n/review-room search \"<query>\" [--room <room_type>] [--tags <tags>]\n\n# List entries\n/review-room list [--room <room_type>] [--limit N]\n\n# View entry details\n/review-room view <entry_id>\n\n# Export for documentation\n/review-room export [--format markdown|json] [--room <room_type>]\n\n# Statistics\n/review-room stats [--palace <palace_id>]\n```\n**Verification:** Run the command with `--help` flag to verify availability.\n\n## Best Practices\n\n1. **Capture decisions immediately** - Context is freshest right after review\n2. **Link related entries** - Build the knowledge graph\n3. **Use consistent tags** - Enable cross-project discovery\n4. **Review periodically** - Prune outdated entries\n5. **Surface proactively** - Show relevant knowledge when starting related work\n\n## Module Reference\n\n- See `modules/capture-workflow.md` for detailed capture process\n- See `modules/evaluation-criteria.md` for knowledge worth assessment\n- See `modules/search-patterns.md` for query optimization\n\nFile v1.9.16:_meta.json\n\n{\n  \"ownerId\": \"kn7d107jg9jv602h9ytsegydq184a42s\",\n  \"slug\": \"nm-memory-palace-review-chamber\",\n  \"version\": \"1.9.16\",\n  \"publishedAt\": 1784058861680\n}\n\nFile v1.9.16:modules/capture-workflow.md\n\n# Capture Workflow Module\n\nDetailed workflow for capturing PR review knowledge into the review chamber.\n\n## Trigger Points\n\nKnowledge capture can be triggered:\n\n1. **Automatically**: After `sanctum:pr-review` completes Phase 6\n2. **Manually**: Via `/review-room capture` command\n3. **Retroactively**: From existing PR review threads\n\n## Automatic Capture Flow\n\n```mermaid\ngraph TD\n    A[PR Review Completed] --> B{Has BLOCKING findings?}\n    B -->|Yes| C[Evaluate each finding]\n    B -->|No| D{Has IN-SCOPE findings?}\n    D -->|Yes| C\n    D -->|No| E[Skip capture]\n\n    C --> F{Score ≥ 60?}\n    F -->|Yes| G[Classify room type]\n    F -->|No| E\n\n    G --> H[Create ReviewEntry]\n    H --> I[Add to project palace]\n    I --> J[Update connections]\n    J --> K[Report captured entries]\n```\n\n## Finding Evaluation\n\nFor each PR finding, compute a capture score:\n\n### Novelty Check (25 points max)\n\n```python\ndef evaluate_novelty(finding, existing_entries):\n    \"\"\"Check if finding represents new knowledge.\"\"\"\n\n    # Search existing entries for similar content\n    similar = search_similar(finding.content, existing_entries)\n\n    if not similar:\n        return 25  # Completely novel\n\n    best_match = similar[0]\n    if best_match.similarity < 0.5:\n        return 20  # Mostly novel\n    elif best_match.similarity < 0.8:\n        return 10  # Partial overlap - may add context\n    else:\n        return 0   # Duplicate - skip\n```\n\n### Applicability Check (30 points max)\n\n```python\ndef evaluate_applicability(finding, project_context):\n    \"\"\"Estimate future relevance.\"\"\"\n\n    score = 0\n\n    # Affects common code paths\n    if finding.file in project_context.hot_paths:\n        score += 15\n\n    # Relates to core domain\n    if finding.category in project_context.core_domains:\n        score += 10\n\n    # Has broad applicability\n    if len(finding.affected_files) > 3:\n        score += 5\n\n    return min(30, score)\n```\n\n### Durability Check (20 points max)\n\n```python\ndef evaluate_durability(finding):\n    \"\"\"Distinguish architectural from tactical.\"\"\"\n\n    # Architectural indicators\n    architectural_keywords = [\n        'architecture', 'design', 'pattern', 'convention',\n        'security', 'performance', 'scalability', 'api'\n    ]\n\n    # Tactical indicators\n    tactical_keywords = [\n        'typo', 'formatting', 'temporary', 'workaround',\n        'quick fix', 'hotfix', 'revert'\n    ]\n\n    content_lower = finding.content.lower()\n\n    arch_matches = sum(1 for k in architectural_keywords if k in content_lower)\n    tact_matches = sum(1 for k in tactical_keywords if k in content_lower)\n\n    if arch_matches > tact_matches:\n        return 20  # Architectural\n    elif arch_matches == tact_matches:\n        return 10  # Mixed\n    else:\n        return 0   # Tactical - skip\n```\n\n### Connectivity Check (15 points max)\n\n```python\ndef evaluate_connectivity(finding, palace):\n    \"\"\"Check links to existing knowledge.\"\"\"\n\n    score = 0\n\n    # Links to existing ADRs\n    if finding.references_adr:\n        score += 5\n\n    # Links to workshop patterns\n    if finding.references_pattern:\n        score += 5\n\n    # Would create new connections\n    potential_links = find_potential_links(finding, palace)\n    if len(potential_links) > 2:\n        score += 5\n\n    return score\n```\n\n### Authority Check (10 points max)\n\n```python\ndef evaluate_authority(finding, participants):\n    \"\"\"Weight by reviewer expertise.\"\"\"\n\n    score = 0\n\n    # Senior reviewer involved\n    if any(is_senior(p) for p in participants):\n        score += 5\n\n    # Domain expert reviewed\n    domain = extract_domain(finding)\n    if any(is_domain_expert(p, domain) for p in participants):\n        score += 5\n\n    return score\n```\n\n## Room Classification Logic\n\nAfter evaluation, classify into appropriate room:\n\n```python\ndef classify_finding(finding, score):\n    \"\"\"Determine target room for finding.\"\"\"\n\n    if score < 60:\n        return None  # Don't capture\n\n    severity = finding.severity\n    category = finding.category.lower()\n\n    # Decisions: Architectural choices with rationale\n    if severity == \"BLOCKING\" and any(k in category for k in [\n        'architecture', 'design', 'security', 'api'\n    ]):\n        return \"decisions\"\n\n    # Patterns: Recurring issues or solutions\n    if is_recurring(finding) or any(k in category for k in [\n        'pattern', 'recurring', 'common', 'best-practice'\n    ]):\n        return \"patterns\"\n\n    # Standards: Quality examples\n    if any(k in category for k in [\n        'quality', 'style', 'convention', 'standard'\n    ]):\n        return \"standards\"\n\n    # Lessons: Retrospective insights\n    if any(k in category for k in [\n        'lesson', 'learning', 'retrospective', 'insight'\n    ]):\n        return \"lessons\"\n\n    # Default: High-severity findings as patterns\n    if severity == \"BLOCKING\":\n        return \"patterns\"\n\n    return None\n```\n\n## Entry Creation\n\nCreate structured entry from finding:\n\n```python\ndef create_review_entry(finding, pr_info, room_type):\n    \"\"\"Create ReviewEntry from finding.\"\"\"\n\n    return ReviewEntry(\n        source_pr=f\"#{pr_info.number} - {pr_info.title}\",\n        title=finding.title,\n        room_type=room_type,\n        content={\n            \"decision\": finding.description,\n            \"context\": extract_discussion_context(finding),\n            \"captured_knowledge\": {\n                \"severity\": finding.severity,\n                \"category\": finding.category,\n                \"file\": finding.file,\n                \"line\": finding.line,\n                \"fix\": finding.suggested_fix,\n            },\n            \"connected_concepts\": find_related_concepts(finding),\n        },\n        participants=pr_info.participants,\n        related_rooms=find_related_rooms(finding),\n        tags=extract_tags(finding),\n    )\n```\n\n## Post-Capture Actions\n\nAfter adding entry to palace:\n\n1. **Update bidirectional links** - Add backlinks from related entries\n2. **Refresh palace index** - Update tags and search index\n3. **Check for contradictions** - Alert if new entry conflicts with existing\n4. **Generate summary** - Report what was captured\n\n```python\ndef post_capture_actions(entry, palace):\n    \"\"\"Actions after successful capture.\"\"\"\n\n    # Add backlinks\n    for related in entry.related_rooms:\n        add_backlink(palace, related, entry.id)\n\n    # Check contradictions\n    contradictions = find_contradictions(entry, palace)\n    if contradictions:\n        alert_contradiction(entry, contradictions)\n\n    # Return summary\n    return {\n        \"entry_id\": entry.id,\n        \"room\": f\"review-chamber/{entry.room_type}\",\n        \"title\": entry.title,\n        \"tags\": entry.tags,\n        \"related\": entry.related_rooms,\n    }\n```\n\nFile v1.9.16:modules/evaluation-criteria.md\n\n# Evaluation Criteria Module\n\nDetailed criteria for evaluating whether PR review findings are worth capturing.\n\n## Evaluation Framework\n\nBased on memory-palace:knowledge-intake, adapted for PR reviews.\n\n### Scoring Summary\n\n| Criterion | Weight | Max Points |\n|-----------|--------|------------|\n| Novelty | 25% | 25 |\n| Applicability | 30% | 30 |\n| Durability | 20% | 20 |\n| Connectivity | 15% | 15 |\n| Authority | 10% | 10 |\n| **Total** | 100% | 100 |\n\n### Capture Thresholds\n\n| Score Range | Action |\n|-------------|--------|\n| 80-100 | **Evergreen**: Capture immediately, permanent retention |\n| 60-79 | **Valuable**: Capture, standard retention |\n| 40-59 | **Reference**: Consider manual capture |\n| 0-39 | **Skip**: Not worth capturing |\n\n## Detailed Criteria\n\n### 1. Novelty (25 points)\n\n**Question**: Is this knowledge new to the project?\n\n| Score | Description |\n|-------|-------------|\n| 25 | Completely novel - first time this pattern/decision documented |\n| 20 | Mostly novel - adds significant new context |\n| 15 | Moderate novelty - extends existing knowledge |\n| 10 | Low novelty - mostly overlaps with existing |\n| 5 | Minimal novelty - slight variation |\n| 0 | Duplicate - already captured |\n\n**Examples**:\n\n```markdown\n## High Novelty (25 points)\n- First authentication architecture decision\n- New error handling pattern for async code\n- Security vulnerability pattern not seen before\n\n## Moderate Novelty (15 points)\n- Alternative approach to existing pattern\n- Additional context for documented decision\n- Edge case for known pattern\n\n## Low/No Novelty (0-5 points)\n- Same bug found in different file\n- Style preference already in standards\n- Known limitation documented elsewhere\n```\n\n### 2. Applicability (30 points)\n\n**Question**: Will this affect future development?\n\n| Score | Description |\n|-------|-------------|\n| 30 | Core domain - affects all future work in area |\n| 25 | High applicability - affects most related PRs |\n| 20 | Moderate - affects some future work |\n| 15 | Limited - specific to few use cases |\n| 10 | Narrow - rarely applicable |\n| 0 | One-off - unique circumstance |\n\n**Indicators of High Applicability**:\n\n```markdown\n## High Applicability Signals\n- Affects shared/core code paths\n- Relates to API contracts\n- Security or performance critical\n- Multiple files/components affected\n- Frequently modified code area\n\n## Low Applicability Signals\n- One-off migration code\n- Deprecated feature\n- External dependency quirk\n- Test-only concern\n- Configuration edge case\n```\n\n### 3. Durability (20 points)\n\n**Question**: Is this architectural or tactical?\n\n| Score | Description |\n|-------|-------------|\n| 20 | Architectural - fundamental design choice |\n| 15 | Semi-permanent - likely to last years |\n| 10 | Medium-term - relevant for months |\n| 5 | Short-term - may change soon |\n| 0 | Tactical - temporary workaround |\n\n**Classification Guide**:\n\n```markdown\n## Architectural (20 points)\n- Technology choices (JWT vs sessions)\n- API design decisions\n- Data model structures\n- Security architecture\n- Performance strategies\n\n## Semi-permanent (15 points)\n- Coding conventions\n- Error handling patterns\n- Testing strategies\n- Documentation standards\n\n## Tactical (0-5 points)\n- Bug fixes without pattern\n- Formatting changes\n- Temporary workarounds\n- Dependency updates\n- Revert commits\n```\n\n### 4. Connectivity (15 points)\n\n**Question**: Does this link to other knowledge?\n\n| Score | Description |\n|-------|-------------|\n| 15 | Highly connected - links 3+ existing entries |\n| 10 | Connected - links 1-2 entries |\n| 5 | Potentially connected - could link to entries |\n| 0 | Isolated - standalone knowledge |\n\n**Connection Types**:\n\n```markdown\n## Strong Connections (15 points)\n- References existing ADR\n- Extends documented pattern\n- Contradicts (needs resolution!) existing entry\n- Builds on prior PR decision\n\n## Moderate Connections (10 points)\n- Related to existing topic\n- Same code area as prior entries\n- Similar category/tags\n\n## Weak/No Connections (0-5 points)\n- New domain area\n- No related entries exist\n- Standalone utility\n```\n\n### 5. Authority (10 points)\n\n**Question**: Who provided this knowledge?\n\n| Score | Description |\n|-------|-------------|\n| 10 | Domain expert and senior reviewer |\n| 7 | Domain expert OR senior reviewer |\n| 5 | Experienced team member |\n| 3 | Regular contributor |\n| 0 | Unknown/external |\n\n**Authority Signals**:\n\n```markdown\n## High Authority (10 points)\n- Code owner reviewed\n- Domain expert participated\n- Tech lead approved\n- Security team involved (for security findings)\n\n## Moderate Authority (5-7 points)\n- Experienced team member\n- Prior contributor to area\n- Cross-team reviewer\n\n## Lower Authority (0-3 points)\n- New team member (may still be valid!)\n- External contributor\n- Bot/automated review\n```\n\n## Special Cases\n\n### Always Capture\n\nSome findings should always be captured regardless of score:\n\n```markdown\n## Mandatory Capture\n- Security vulnerabilities with fix\n- Breaking API changes\n- Performance regression causes\n- Data loss scenarios\n- Production incident learnings\n```\n\n### Never Capture\n\nSome findings should never be captured:\n\n```markdown\n## Skip Always\n- Typo fixes\n- Import ordering\n- Whitespace changes\n- Dependency version bumps (unless significant)\n- Auto-formatter changes\n```\n\n### Human Override\n\nAllow manual override of scoring:\n\n```markdown\n## Force Capture\n/review-room capture 42 --force --room decisions\n# Captures even if score < 60\n\n## Force Skip\n/review-room capture 42 --skip \"duplicate of #38\"\n# Explicitly skip with reason\n```\n\n## Scoring Examples\n\n### Example 1: JWT Authentication Decision\n\n```yaml\nFinding:\n  title: \"Chose JWT over server-side sessions\"\n  severity: BLOCKING\n  category: security/architecture\n  context: \"Reviewer asked about sessions, author explained scaling needs\"\n\nScoring:\n  novelty: 25  # First auth architecture decision\n  applicability: 30  # Affects all auth code\n  durability: 20  # Architectural choice\n  connectivity: 10  # Links to security ADR\n  authority: 10  # Tech lead + security reviewer\n\nTotal: 95/100 → Capture to decisions/ (Evergreen)\n```\n\n### Example 2: Missing Null Check\n\n```yaml\nFinding:\n  title: \"Add null check before array access\"\n  severity: IN-SCOPE\n  category: bug\n  context: \"Could cause NPE in edge case\"\n\nScoring:\n  novelty: 5   # Common pattern\n  applicability: 10  # Specific function\n  durability: 5   # Tactical fix\n  connectivity: 0   # Isolated\n  authority: 5   # Regular reviewer\n\nTotal: 25/100 → Skip (tactical fix)\n```\n\n### Example 3: Error Response Pattern\n\n```yaml\nFinding:\n  title: \"Standardize API error response format\"\n  severity: IN-SCOPE\n  category: api/convention\n  context: \"Third time we've discussed this, let's document\"\n\nScoring:\n  novelty: 20  # Formalizing informal convention\n  applicability: 25  # All API endpoints\n  durability: 15  # Convention, may evolve\n  connectivity: 10  # Links to API docs\n  authority: 7   # Domain expert\n\nTotal: 77/100 → Capture to standards/ (Valuable)\n```\n\nFile v1.9.16:modules/search-patterns.md\n\n# Search Patterns Module\n\nPatterns for searching and retrieving knowledge from the review chamber.\n\n## Search Modalities\n\nThe review chamber supports multiple search approaches, building on knowledge-locator patterns.\n\n### 1. Semantic Search\n\nFind entries by meaning, not just keywords.\n\n```bash\n# Find decisions about authentication\n/review-room search \"how do we handle user authentication\" --type semantic\n\n# Returns entries about JWT, sessions, OAuth even if those exact words not used\n```\n\n**Implementation**:\n```python\ndef semantic_search(query, entries):\n    \"\"\"Search by meaning using embeddings or keyword expansion.\"\"\"\n\n    # Expand query with related terms\n    expanded = expand_query(query)\n    # \"authentication\" → [\"auth\", \"login\", \"session\", \"jwt\", \"oauth\"]\n\n    results = []\n    for entry in entries:\n        score = compute_semantic_similarity(expanded, entry.content)\n        if score > 0.3:  # Threshold\n            results.append((entry, score))\n\n    return sorted(results, key=lambda x: x[1], reverse=True)\n```\n\n### 2. Spatial Search\n\nNavigate by room and location in the palace.\n\n```bash\n# Browse decisions room\n/review-room list --room decisions\n\n# Find entries in patterns room with specific tags\n/review-room list --room patterns --tags api,error-handling\n```\n\n**Room Navigation**:\n```\nreview-chamber/\n├── decisions/     → Architectural choices\n│   └── jwt-auth.md\n│   └── api-versioning.md\n├── patterns/      → Recurring solutions\n│   └── retry-logic.md\n│   └── error-responses.md\n├── standards/     → Quality examples\n│   └── code-review-checklist.md\n└── lessons/       → Learnings\n    └── outage-2025-01.md\n```\n\n### 3. Temporal Search\n\nFind entries by time or PR timeline.\n\n```bash\n# Recent entries\n/review-room search --since \"2025-01-01\"\n\n# Entries from specific PR range\n/review-room search --pr-range 40-50\n\n# Most accessed entries\n/review-room search --sort-by access_count\n```\n\n### 4. Associative Search\n\nFollow connections between entries.\n\n```bash\n# Find entries related to specific entry\n/review-room related <entry_id>\n\n# Explore connection graph\n/review-room graph --start jwt-auth --depth 2\n```\n\n**Connection Types**:\n- `related_rooms` - Links to other palace rooms\n- `connected_concepts` - Bidirectional concept links\n- `source_pr` - Link back to GitHub PR\n- `tags` - Shared tag connections\n\n### 5. Contextual Search\n\nSurface relevant entries based on current work context.\n\n```bash\n# When in auth/ directory\n/review-room context auth/\n\n# Returns:\n# - Past decisions about authentication\n# - Known patterns in this code area\n# - Relevant standards to follow\n```\n\n## Search Filters\n\n### By Room Type\n\n```bash\n/review-room search \"query\" --room decisions\n/review-room search \"query\" --room patterns\n/review-room search \"query\" --room standards\n/review-room search \"query\" --room lessons\n```\n\n### By Tags\n\n```bash\n# Single tag\n/review-room search \"query\" --tags security\n\n# Multiple tags (AND)\n/review-room search \"query\" --tags security,api\n\n# Multiple tags (OR)\n/review-room search \"query\" --tags-any security,performance\n```\n\n### By Participants\n\n```bash\n# Entries from reviews by specific person\n/review-room search \"query\" --participant @username\n\n# Entries where specific reviewer participated\n/review-room search \"query\" --reviewer @techleader\n```\n\n### By Source PR\n\n```bash\n# From specific PR\n/review-room search --pr 42\n\n# From PR range\n/review-room search --pr-range 40-50\n```\n\n### By Time\n\n```bash\n# Since date\n/review-room search \"query\" --since 2025-01-01\n\n# Before date\n/review-room search \"query\" --before 2025-06-01\n\n# Date range\n/review-room search \"query\" --since 2025-01-01 --before 2025-06-01\n```\n\n## Proactive Surfacing\n\nAutomatically surface relevant knowledge at key moments.\n\n### On PR Creation\n\nWhen creating a PR in a code area with relevant history:\n\n```markdown\n## 📚 Relevant Review Knowledge\n\nYour PR touches files in `auth/`. Here's relevant knowledge:\n\n### Past Decisions\n| PR | Decision | Room |\n|----|----------|------|\n| #42 | JWT over sessions | decisions/jwt-auth |\n| #67 | Token refresh pattern | patterns/token-refresh |\n\n### Quality Standards\n- API error format: See standards/api-errors\n- Auth test coverage: See standards/auth-testing\n\n### Known Patterns\n- Token refresh race condition: patterns/token-refresh-race\n```\n\n### On Code Review\n\nWhen reviewing code in area with history:\n\n```markdown\n## 💡 Review Context\n\nThis PR modifies authentication code. Consider:\n\n### Prior Decisions\n- JWT tokens chosen for stateless scaling (#42)\n- Refresh tokens must be rotated (#67)\n\n### Common Issues\n- Token validation bypass (seen in #38)\n- Missing rate limiting (pattern #12)\n```\n\n### On Bug Investigation\n\nWhen investigating bugs in documented areas:\n\n```markdown\n## 🔍 Related Knowledge\n\nDebugging issue in auth flow. Review chamber has:\n\n### Lessons Learned\n- Outage from token expiry misconfiguration (lessons/auth-outage-2025)\n- Race condition in refresh (patterns/token-refresh-race)\n\n### Related Decisions\n- Why we use JWT: decisions/jwt-auth\n```\n\n## Search Result Format\n\n### Summary View (Default)\n\n```markdown\n## Search Results: \"authentication\"\n\nFound 5 entries in review-chamber:\n\n| Room | Title | PR | Date |\n|------|-------|-----|------|\n| decisions | JWT over sessions | #42 | 2025-01-15 |\n| patterns | Token refresh pattern | #67 | 2025-02-20 |\n| patterns | Rate limiting | #55 | 2025-01-28 |\n| standards | Auth testing | #48 | 2025-01-20 |\n| lessons | Token expiry outage | #89 | 2025-03-01 |\n```\n\n### Detail View\n\n```markdown\n## Entry: decisions/jwt-auth\n\n**Source PR:** #42 - Add user authentication\n**Date:** 2025-01-15\n**Participants:** @alice, @bob, @securityteam\n**Tags:** authentication, jwt, security, architecture\n\n### Decision\nChose JWT tokens over server-side sessions for stateless scaling.\n\n### Context\n- Reviewer asked about session persistence\n- Author explained horizontal scaling requirements\n- Security team approved with refresh token requirement\n\n### Captured Knowledge\n- **Pattern:** JWT + refresh tokens for stateless auth\n- **Tradeoff:** Complexity vs. horizontal scaling\n- **Application:** All API authentication\n\n### Connected\n- [[auth-patterns]] - Workshop patterns\n- [[security-adr-003]] - Library ADR\n- patterns/token-refresh - Related pattern\n```\n\n## CLI Integration\n\n### palace_manager.py Extension\n\n```bash\n# Search review chamber\npython scripts/palace_manager.py search \"authentication\" \\\n  --palace <project_id> \\\n  --room review-chamber \\\n  --subroom decisions \\\n  --type semantic\n\n# List with filters\npython scripts/palace_manager.py list-reviews \\\n  --palace <project_id> \\\n  --room patterns \\\n  --tags api \\\n  --since 2025-01-01\n\n# Export for documentation\npython scripts/palace_manager.py export-reviews \\\n  --palace <project_id> \\\n  --format markdown \\\n  --output docs/review-decisions.md\n```\n\n## Performance Considerations\n\n### Indexing\n\n```python\n# Maintain search indexes\n- Tag index: tag → [entry_ids]\n- Room index: room → [entry_ids]\n- Temporal index: date → [entry_ids]\n- Participant index: user → [entry_ids]\n- Embedding index: entry_id → vector (optional)\n```\n\n### Caching\n\n```python\n# Cache frequently accessed entries\n- LRU cache for recent searches\n- Pre-compute hot entry summaries\n- Background index updates\n```\n\n### Limits\n\n```python\n# Search result limits\nMAX_RESULTS = 50  # Per search\nMAX_DEPTH = 3     # For graph traversal\nTIMEOUT = 5000    # ms for search operations\n```\n\nFile v1.9.16:skill-card.md\n\n## Description: <br>\nCaptures and retrieves PR-review findings in memory palaces for storing architectural decisions, recurring patterns, standards, and lessons for future reference. <br>\n\nThis skill is ready for commercial/non-commercial use. <br>\n\n## Publisher: <br>\n[athola](https://clawhub.ai/user/athola) <br>\n\n### License/Terms of Use: <br>\nMIT-0 <br>\n\n\n## Use Case: <br>\nDevelopers and reviewers use this skill after PR review to decide which findings should become persistent project knowledge and where to store them in a memory palace. <br>\n\n### Deployment Geography for Use: <br>\nGlobal <br>\n\n## Known Risks and Mitigations: <br>\nRisk: The skill can preserve PR review knowledge such as security findings, design decisions, PR numbers, and participant names. <br>\nMitigation: Use it only in projects where persistent internal knowledge capture is acceptable, and review captured entries before storing or sharing them. <br>\n\n\n## Reference(s): <br>\n- [ClawHub skill page](https://clawhub.ai/athola/skills/nm-memory-palace-review-chamber) <br>\n- [ClawDIS homepage](https://github.com/athola/claude-night-market/tree/master/plugins/memory-palace) <br>\n\n\n## Skill Output: <br>\n**Output Type(s):** [Guidance, Markdown, Shell commands, Configuration] <br>\n**Output Format:** [Markdown with examples, checklists, tables, and command snippets] <br>\n**Output Parameters:** [1D] <br>\n**Other Properties Related to Output:** [Produces structured review-capture guidance rather than executable code.] <br>\n\n## Skill Version(s): <br>\n1.9.16 (source: server release evidence) <br>\n\n## Ethical Considerations: <br>\nUsers should evaluate whether this skill is appropriate for their environment, review any generated or modified files before relying on them, and apply their organization's safety, security, and compliance requirements before deployment. <br>\n\nArchive v1.9.14: 6 files, 13763 bytes\n\nFiles: modules/capture-workflow.md (6668b), modules/evaluation-criteria.md (7010b), modules/search-patterns.md (7517b), skill-card.md (2430b), SKILL.md (9372b), _meta.json (151b)\n\nFile v1.9.14:SKILL.md\n\n---\nname: review-chamber\ndescription: |\n  Captures and retrieves PR-review findings in memory palaces. Use after PR review to store architectural decisions, patterns, and standards for future reference\nversion: 1.9.8\nmetadata: {\"openclaw\": {\"homepage\": \"https://github.com/athola/claude-night-market/tree/master/plugins/memory-palace\", \"emoji\": \"\\ud83e\\udd9e\", \"requires\": {\"config\": [\"night-market.memory-palace:knowledge-intake\", \"night-market.sanctum:pr-review\"]}}}\nsource: claude-night-market\nsource_plugin: memory-palace\n---\n\n> **Night Market Skill** — ported from [claude-night-market/memory-palace](https://github.com/athola/claude-night-market/tree/master/plugins/memory-palace). For the full experience with agents, hooks, and commands, install the Claude Code plugin.\n\n\n## Table of Contents\n\n- [Overview](#overview)\n- [Room Structure](#room-structure)\n- [Workflow Phases](#workflow-phases)\n- [Phase 1: Knowledge Detection](#phase-1:-knowledge-detection)\n- [Knowledge Detection Checklist](#knowledge-detection-checklist)\n- [Phase 2: Classification](#phase-2:-classification)\n- [Phase 3: Capture](#phase-3:-capture)\n- [Decision Title](#decision-title)\n- [Decision](#decision)\n- [Context (from PR discussion)](#context-(from-pr-discussion))\n- [Captured Knowledge](#captured-knowledge)\n- [Connected Concepts](#connected-concepts)\n- [Phase 4: Integration](#phase-4:-integration)\n- [Usage Examples](#usage-examples)\n- [Capture After PR Review](#capture-after-pr-review)\n- [Search Past Decisions](#search-past-decisions)\n- [Surface Relevant Knowledge](#surface-relevant-knowledge)\n- [Relevant Review Knowledge](#relevant-review-knowledge)\n- [Integration Points](#integration-points)\n- [With sanctum:pr-review](#with-sanctum:pr-review)\n- [With knowledge-intake](#with-knowledge-intake)\n- [With knowledge-locator](#with-knowledge-locator)\n- [Evaluation Rubric](#evaluation-rubric)\n- [Worth Capturing (Score ≥ 60)](#worth-capturing-(score-≥-60))\n- [Skip (Score < 60)](#skip-(score-<-60))\n- [CLI Reference](#cli-reference)\n- [Best Practices](#best-practices)\n\n\n# PR Review Chamber Skill\n\nCapture, organize, and retrieve knowledge from PR reviews within project memory palaces.\n\n\n## When To Use\n\n- Capturing PR review knowledge for future reference\n- Building review pattern libraries from past reviews\n\n## When NOT To Use\n\n- Quick self-reviews of trivial changes\n- Automated CI checks that cover the review scope\n\n## Overview\n\nThe 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.\n\n## Room Structure\n\n```\nreview-chamber/\n├── decisions/      # Architectural choices from PR discussions\n├── patterns/       # Recurring issues and their solutions\n├── standards/      # Quality bar examples and coding conventions\n└── lessons/        # Post-mortems and learnings\n```\n**Verification:** Run the command with `--help` flag to verify availability.\n\n## Workflow Phases\n\n### Phase 1: Knowledge Detection\n\nAfter a PR review completes, evaluate findings for knowledge capture:\n\n```markdown\n## Knowledge Detection Checklist\n\nFor each finding from sanctum:pr-review, evaluate:\n\n- [ ] **Novelty**: Is this a new pattern or first occurrence?\n- [ ] **Applicability**: Will this affect future PRs in this area?\n- [ ] **Durability**: Is this architectural (capture) or tactical (skip)?\n- [ ] **Connectivity**: Does it link to existing palace rooms?\n```\n**Verification:** Run the command with `--help` flag to verify availability.\n\n### Phase 2: Classification\n\nRoute findings to appropriate subrooms:\n\n| Finding Type | Target Room | Criteria |\n|-------------|-------------|----------|\n| Architectural choice | `decisions/` | BLOCKING and architectural context |\n| Recurring issue | `patterns/` | Seen before or likely to recur |\n| Quality example | `standards/` | Exemplifies coding standards |\n| Learning/insight | `lessons/` | Retrospective or post-mortem |\n\n### Phase 3: Capture\n\nCreate structured entry with:\n\n```yaml\n---\nsource_pr: \"#42 - Add authentication\"\ndate: 2025-01-15\nparticipants: [author, reviewer1, reviewer2]\npalace_location: review-chamber/decisions\nrelated_rooms: [workshop/auth-patterns, library/security-adr]\ntags: [authentication, jwt, security]\n---\n\n## Decision Title\n\n### Decision\nChose JWT tokens over server-side sessions.\n\n### Context (from PR discussion)\n- Reviewer asked: \"Why not use sessions?\"\n- Author explained: stateless scaling requirements\n- Discussion refined: added refresh token rotation\n\n### Captured Knowledge\n- **Pattern**: JWT + refresh tokens for stateless auth\n- **Tradeoff**: Complexity vs. horizontal scaling\n- **Application**: Use for all API authentication\n\n### Connected Concepts\n- [[auth-patterns]] - Updated with JWT best practices\n- [[security-adr-003]] - Referenced this decision\n```\n**Verification:** Run the command with `--help` flag to verify availability.\n\n### Phase 4: Integration\n\nAfter capture, update related palace rooms:\n\n1. Add bidirectional links to related entries\n2. Update tags in project palace index\n3. Notify if this contradicts existing entries\n\n## Usage Examples\n\n### Capture After PR Review\n\n```bash\n# Automatic: sanctum:pr-review triggers capture\n/pr-review 42\n# → Review posted to GitHub\n# → Knowledge capture evaluates findings\n# → Significant decisions stored in review-chamber\n\n# Manual: Explicitly capture from PR\n/review-room capture 42 --room decisions\n```\n**Verification:** Run the command with `--help` flag to verify availability.\n\n### Search Past Decisions\n\n```bash\n# Find authentication decisions\n/review-room search \"authentication\" --room decisions\n\n# Find patterns in a specific area\n/review-room search \"error handling\" --room patterns --tags api\n\n# List recent entries\n/review-room list --limit 10 --room standards\n```\n**Verification:** Run the command with `--help` flag to verify availability.\n\n### Surface Relevant Knowledge\n\nWhen starting work in a code area:\n\n```markdown\n## Relevant Review Knowledge\n\nStarting work in `auth/` directory...\n\n**Past Decisions:**\n- [#42] JWT token decision → decisions/jwt-over-sessions\n- [#67] Rate limiting pattern → patterns/api-throttling\n\n**Quality Standards:**\n- [#55] Error response format → standards/api-errors\n\n**Known Patterns:**\n- [#38] Token refresh edge case → patterns/token-refresh-race\n```\n**Verification:** Run the command with `--help` flag to verify availability.\n\n## Integration Points\n\n### With sanctum:pr-review\n\nThe review-chamber integrates after Phase 6 (Generate Report):\n\n```\n**Verification:** Run the command with `--help` flag to verify availability.\nPhase 6: Generate Report\n    ↓\n[HOOK] Evaluate findings for knowledge capture\n    ↓\n    For each significant finding:\n    ├── Classify into room type\n    ├── Create ReviewEntry\n    ├── Add to project palace\n    └── Update connections\n    ↓\nPhase 7: Post to GitHub\n```\n**Verification:** Run the command with `--help` flag to verify availability.\n\n### With knowledge-intake\n\nUses the same evaluation framework:\n\n| Criterion | Weight | PR Review Application |\n|-----------|--------|----------------------|\n| Novelty | 25% | New pattern or first occurrence |\n| Applicability | 30% | Affects future PRs in this area |\n| Durability | 20% | Architectural vs tactical |\n| Connectivity | 15% | Links to existing rooms |\n| Authority | 10% | Senior reviewer or domain expert |\n\n### With knowledge-locator\n\nExtends search to include review-chamber:\n\n```bash\npython scripts/palace_manager.py search \"authentication\" \\\n  --palace project-name \\\n  --room review-chamber \\\n  --type semantic\n```\n**Verification:** Run `python --version` to verify Python environment.\n\n## Evaluation Rubric\n\n### Worth Capturing (Score ≥ 60)\n\n- **Architectural decisions** with documented rationale\n- **Recurring patterns** seen in 2+ PRs\n- **Security/performance** critical findings\n- **Domain knowledge** that explains business logic\n- **Convention changes** that affect future code\n\n### Skip (Score < 60)\n\n- One-off tactical fixes\n- Style preferences without rationale\n- Obvious bugs without pattern\n- External dependency issues\n- Temporary workarounds\n\n## CLI Reference\n\n```bash\n# Capture knowledge from PR\n/review-room capture <pr_number> [--room <room_type>] [--tags <tags>]\n\n# Search review chamber\n/review-room search \"<query>\" [--room <room_type>] [--tags <tags>]\n\n# List entries\n/review-room list [--room <room_type>] [--limit N]\n\n# View entry details\n/review-room view <entry_id>\n\n# Export for documentation\n/review-room export [--format markdown|json] [--room <room_type>]\n\n# Statistics\n/review-room stats [--palace <palace_id>]\n```\n**Verification:** Run the command with `--help` flag to verify availability.\n\n## Best Practices\n\n1. **Capture decisions immediately** - Context is freshest right after review\n2. **Link related entries** - Build the knowledge graph\n3. **Use consistent tags** - Enable cross-project discovery\n4. **Review periodically** - Prune outdated entries\n5. **Surface proactively** - Show relevant knowledge when starting related work\n\n## Module Reference\n\n- See `modules/capture-workflow.md` for detailed capture process\n- See `modules/evaluation-criteria.md` for knowledge worth assessment\n- See `modules/search-patterns.md` for query optimization\n\nFile v1.9.14:_meta.json\n\n{\n  \"ownerId\": \"kn7d107jg9jv602h9ytsegydq184a42s\",\n  \"slug\": \"nm-memory-palace-review-chamber\",\n  \"version\": \"1.9.14\",\n  \"publishedAt\": 1782842577640\n}\n\nFile v1.9.14:modules/capture-workflow.md\n\n# Capture Workflow Module\n\nDetailed workflow for capturing PR review knowledge into the review chamber.\n\n## Trigger Points\n\nKnowledge capture can be triggered:\n\n1. **Automatically**: After `sanctum:pr-review` completes Phase 6\n2. **Manually**: Via `/review-room capture` command\n3. **Retroactively**: From existing PR review threads\n\n## Automatic Capture Flow\n\n```mermaid\ngraph TD\n    A[PR Review Completed] --> B{Has BLOCKING findings?}\n    B -->|Yes| C[Evaluate each finding]\n    B -->|No| D{Has IN-SCOPE findings?}\n    D -->|Yes| C\n    D -->|No| E[Skip capture]\n\n    C --> F{Score ≥ 60?}\n    F -->|Yes| G[Classify room type]\n    F -->|No| E\n\n    G --> H[Create ReviewEntry]\n    H --> I[Add to project palace]\n    I --> J[Update connections]\n    J --> K[Report captured entries]\n```\n\n## Finding Evaluation\n\nFor each PR finding, compute a capture score:\n\n### Novelty Check (25 points max)\n\n```python\ndef evaluate_novelty(finding, existing_entries):\n    \"\"\"Check if finding represents new knowledge.\"\"\"\n\n    # Search existing entries for similar content\n    similar = search_similar(finding.content, existing_entries)\n\n    if not similar:\n        return 25  # Completely novel\n\n    best_match = similar[0]\n    if best_match.similarity < 0.5:\n        return 20  # Mostly novel\n    elif best_match.similarity < 0.8:\n        return 10  # Partial overlap - may add context\n    else:\n        return 0   # Duplicate - skip\n```\n\n### Applicability Check (30 points max)\n\n```python\ndef evaluate_applicability(finding, project_context):\n    \"\"\"Estimate future relevance.\"\"\"\n\n    score = 0\n\n    # Affects common code paths\n    if finding.file in project_context.hot_paths:\n        score += 15\n\n    # Relates to core domain\n    if finding.category in project_context.core_domains:\n        score += 10\n\n    # Has broad applicability\n    if len(finding.affected_files) > 3:\n        score += 5\n\n    return min(30, score)\n```\n\n### Durability Check (20 points max)\n\n```python\ndef evaluate_durability(finding):\n    \"\"\"Distinguish architectural from tactical.\"\"\"\n\n    # Architectural indicators\n    architectural_keywords = [\n        'architecture', 'design', 'pattern', 'convention',\n        'security', 'performance', 'scalability', 'api'\n    ]\n\n    # Tactical indicators\n    tactical_keywords = [\n        'typo', 'formatting', 'temporary', 'workaround',\n        'quick fix', 'hotfix', 'revert'\n    ]\n\n    content_lower = finding.content.lower()\n\n    arch_matches = sum(1 for k in architectural_keywords if k in content_lower)\n    tact_matches = sum(1 for k in tactical_keywords if k in content_lower)\n\n    if arch_matches > tact_matches:\n        return 20  # Architectural\n    elif arch_matches == tact_matches:\n        return 10  # Mixed\n    else:\n        return 0   # Tactical - skip\n```\n\n### Connectivity Check (15 points max)\n\n```python\ndef evaluate_connectivity(finding, palace):\n    \"\"\"Check links to existing knowledge.\"\"\"\n\n    score = 0\n\n    # Links to existing ADRs\n    if finding.references_adr:\n        score += 5\n\n    # Links to workshop patterns\n    if finding.references_pattern:\n        score += 5\n\n    # Would create new connections\n    potential_links = find_potential_links(finding, palace)\n    if len(potential_links) > 2:\n        score += 5\n\n    return score\n```\n\n### Authority Check (10 points max)\n\n```python\ndef evaluate_authority(finding, participants):\n    \"\"\"Weight by reviewer expertise.\"\"\"\n\n    score = 0\n\n    # Senior reviewer involved\n    if any(is_senior(p) for p in participants):\n        score += 5\n\n    # Domain expert reviewed\n    domain = extract_domain(finding)\n    if any(is_domain_expert(p, domain) for p in participants):\n        score += 5\n\n    return score\n```\n\n## Room Classification Logic\n\nAfter evaluation, classify into appropriate room:\n\n```python\ndef classify_finding(finding, score):\n    \"\"\"Determine target room for finding.\"\"\"\n\n    if score < 60:\n        return None  # Don't capture\n\n    severity = finding.severity\n    category = finding.category.lower()\n\n    # Decisions: Architectural choices with rationale\n    if severity == \"BLOCKING\" and any(k in category for k in [\n        'architecture', 'design', 'security', 'api'\n    ]):\n        return \"decisions\"\n\n    # Patterns: Recurring issues or solutions\n    if is_recurring(finding) or any(k in category for k in [\n        'pattern', 'recurring', 'common', 'best-practice'\n    ]):\n        return \"patterns\"\n\n    # Standards: Quality examples\n    if any(k in category for k in [\n        'quality', 'style', 'convention', 'standard'\n    ]):\n        return \"standards\"\n\n    # Lessons: Retrospective insights\n    if any(k in category for k in [\n        'lesson', 'learning', 'retrospective', 'insight'\n    ]):\n        return \"lessons\"\n\n    # Default: High-severity findings as patterns\n    if severity == \"BLOCKING\":\n        return \"patterns\"\n\n    return None\n```\n\n## Entry Creation\n\nCreate structured entry from finding:\n\n```python\ndef create_review_entry(finding, pr_info, room_type):\n    \"\"\"Create ReviewEntry from finding.\"\"\"\n\n    return ReviewEntry(\n        source_pr=f\"#{pr_info.number} - {pr_info.title}\",\n        title=finding.title,\n        room_type=room_type,\n        content={\n            \"decision\": finding.description,\n            \"context\": extract_discussion_context(finding),\n            \"captured_knowledge\": {\n                \"severity\": finding.severity,\n                \"category\": finding.category,\n                \"file\": finding.file,\n                \"line\": finding.line,\n                \"fix\": finding.suggested_fix,\n            },\n            \"connected_concepts\": find_related_concepts(finding),\n        },\n        participants=pr_info.participants,\n        related_rooms=find_related_rooms(finding),\n        tags=extract_tags(finding),\n    )\n```\n\n## Post-Capture Actions\n\nAfter adding entry to palace:\n\n1. **Update bidirectional links** - Add backlinks from related entries\n2. **Refresh palace index** - Update tags and search index\n3. **Check for contradictions** - Alert if new entry conflicts with existing\n4. **Generate summary** - Report what was captured\n\n```python\ndef post_capture_actions(entry, palace):\n    \"\"\"Actions after successful capture.\"\"\"\n\n    # Add backlinks\n    for related in entry.related_rooms:\n        add_backlink(palace, related, entry.id)\n\n    # Check contradictions\n    contradictions = find_contradictions(entry, palace)\n    if contradictions:\n        alert_contradiction(entry, contradictions)\n\n    # Return summary\n    return {\n        \"entry_id\": entry.id,\n        \"room\": f\"review-chamber/{entry.room_type}\",\n        \"title\": entry.title,\n        \"tags\": entry.tags,\n        \"related\": entry.related_rooms,\n    }\n```\n\nFile v1.9.14:modules/evaluation-criteria.md\n\n# Evaluation Criteria Module\n\nDetailed criteria for evaluating whether PR review findings are worth capturing.\n\n## Evaluation Framework\n\nBased on memory-palace:knowledge-intake, adapted for PR reviews.\n\n### Scoring Summary\n\n| Criterion | Weight | Max Points |\n|-----------|--------|------------|\n| Novelty | 25% | 25 |\n| Applicability | 30% | 30 |\n| Durability | 20% | 20 |\n| Connectivity | 15% | 15 |\n| Authority | 10% | 10 |\n| **Total** | 100% | 100 |\n\n### Capture Thresholds\n\n| Score Range | Action |\n|-------------|--------|\n| 80-100 | **Evergreen**: Capture immediately, permanent retention |\n| 60-79 | **Valuable**: Capture, standard retention |\n| 40-59 | **Reference**: Consider manual capture |\n| 0-39 | **Skip**: Not worth capturing |\n\n## Detailed Criteria\n\n### 1. Novelty (25 points)\n\n**Question**: Is this knowledge new to the project?\n\n| Score | Description |\n|-------|-------------|\n| 25 | Completely novel - first time this pattern/decision documented |\n| 20 | Mostly novel - adds significant new context |\n| 15 | Moderate novelty - extends existing knowledge |\n| 10 | Low novelty - mostly overlaps with existing |\n| 5 | Minimal novelty - slight variation |\n| 0 | Duplicate - already captured |\n\n**Examples**:\n\n```markdown\n## High Novelty (25 points)\n- First authentication architecture decision\n- New error handling pattern for async code\n- Security vulnerability pattern not seen before\n\n## Moderate Novelty (15 points)\n- Alternative approach to existing pattern\n- Additional context for documented decision\n- Edge case for known pattern\n\n## Low/No Novelty (0-5 points)\n- Same bug found in different file\n- Style preference already in standards\n- Known limitation documented elsewhere\n```\n\n### 2. Applicability (30 points)\n\n**Question**: Will this affect future development?\n\n| Score | Description |\n|-------|-------------|\n| 30 | Core domain - affects all future work in area |\n| 25 | High applicability - affects most related PRs |\n| 20 | Moderate - affects some future work |\n| 15 | Limited - specific to few use cases |\n| 10 | Narrow - rarely applicable |\n| 0 | One-off - unique circumstance |\n\n**Indicators of High Applicability**:\n\n```markdown\n## High Applicability Signals\n- Affects shared/core code paths\n- Relates to API contracts\n- Security or performance critical\n- Multiple files/components affected\n- Frequently modified code area\n\n## Low Applicability Signals\n- One-off migration code\n- Deprecated feature\n- External dependency quirk\n- Test-only concern\n- Configuration edge case\n```\n\n### 3. Durability (20 points)\n\n**Question**: Is this architectural or tactical?\n\n| Score | Description |\n|-------|-------------|\n| 20 | Architectural - fundamental design choice |\n| 15 | Semi-permanent - likely to last years |\n| 10 | Medium-term - relevant for months |\n| 5 | Short-term - may change soon |\n| 0 | Tactical - temporary workaround |\n\n**Classification Guide**:\n\n```markdown\n## Architectural (20 points)\n- Technology choices (JWT vs sessions)\n- API design decisions\n- Data model structures\n- Security architecture\n- Performance strategies\n\n## Semi-permanent (15 points)\n- Coding conventions\n- Error handling patterns\n- Testing strategies\n- Documentation standards\n\n## Tactical (0-5 points)\n- Bug fixes without pattern\n- Formatting changes\n- Temporary workarounds\n- Dependency updates\n- Revert commits\n```\n\n### 4. Connectivity (15 points)\n\n**Question**: Does this link to other knowledge?\n\n| Score | Description |\n|-------|-------------|\n| 15 | Highly connected - links 3+ existing entries |\n| 10 | Connected - links 1-2 entries |\n| 5 | Potentially connected - could link to entries |\n| 0 | Isolated - standalone knowledge |\n\n**Connection Types**:\n\n```markdown\n## Strong Connections (15 points)\n- References existing ADR\n- Extends documented pattern\n- Contradicts (needs resolution!) existing entry\n- Builds on prior PR decision\n\n## Moderate Connections (10 points)\n- Related to existing topic\n- Same code area as prior entries\n- Similar category/tags\n\n## Weak/No Connections (0-5 points)\n- New domain area\n- No related entries exist\n- Standalone utility\n```\n\n### 5. Authority (10 points)\n\n**Question**: Who provided this knowledge?\n\n| Score | Description |\n|-------|-------------|\n| 10 | Domain expert and senior reviewer |\n| 7 | Domain expert OR senior reviewer |\n| 5 | Experienced team member |\n| 3 | Regular contributor |\n| 0 | Unknown/external |\n\n**Authority Signals**:\n\n```markdown\n## High Authority (10 points)\n- Code owner reviewed\n- Domain expert participated\n- Tech lead approved\n- Security team involved (for security findings)\n\n## Moderate Authority (5-7 points)\n- Experienced team member\n- Prior contributor to area\n- Cross-team reviewer\n\n## Lower Authority (0-3 points)\n- New team member (may still be valid!)\n- External contributor\n- Bot/automated review\n```\n\n## Special Cases\n\n### Always Capture\n\nSome findings should always be captured regardless of score:\n\n```markdown\n## Mandatory Capture\n- Security vulnerabilities with fix\n- Breaking API changes\n- Performance regression causes\n- Data loss scenarios\n- Production incident learnings\n```\n\n### Never Capture\n\nSome findings should never be captured:\n\n```markdown\n## Skip Always\n- Typo fixes\n- Import ordering\n- Whitespace changes\n- Dependency version bumps (unless significant)\n- Auto-formatter changes\n```\n\n### Human Override\n\nAllow manual override of scoring:\n\n```markdown\n## Force Capture\n/review-room capture 42 --force --room decisions\n# Captures even if score < 60\n\n## Force Skip\n/review-room capture 42 --skip \"duplicate of #38\"\n# Explicitly skip with reason\n```\n\n## Scoring Examples\n\n### Example 1: JWT Authentication Decision\n\n```yaml\nFinding:\n  title: \"Chose JWT over server-side sessions\"\n  severity: BLOCKING\n  category: security/architecture\n  context: \"Reviewer asked about sessions, author explained scaling needs\"\n\nScoring:\n  novelty: 25  # First auth architecture decision\n  applicability: 30  # Affects all auth code\n  durability: 20  # Architectural choice\n  connectivity: 10  # Links to security ADR\n  authority: 10  # Tech lead + security reviewer\n\nTotal: 95/100 → Capture to decisions/ (Evergreen)\n```\n\n### Example 2: Missing Null Check\n\n```yaml\nFinding:\n  title: \"Add null check before array access\"\n  severity: IN-SCOPE\n  category: bug\n  context: \"Could cause NPE in edge case\"\n\nScoring:\n  novelty: 5   # Common pattern\n  applicability: 10  # Specific function\n  durability: 5   # Tactical fix\n  connectivity: 0   # Isolated\n  authority: 5   # Regular reviewer\n\nTotal: 25/100 → Skip (tactical fix)\n```\n\n### Example 3: Error Response Pattern\n\n```yaml\nFinding:\n  title: \"Standardize API error response format\"\n  severity: IN-SCOPE\n  category: api/convention\n  context: \"Third time we've discussed this, let's document\"\n\nScoring:\n  novelty: 20  # Formalizing informal convention\n  applicability: 25  # All API endpoints\n  durability: 15  # Convention, may evolve\n  connectivity: 10  # Links to API docs\n  authority: 7   # Domain expert\n\nTotal: 77/100 → Capture to standards/ (Valuable)\n```\n\nFile v1.9.14:modules/search-patterns.md\n\n# Search Patterns Module\n\nPatterns for searching and retrieving knowledge from the review chamber.\n\n## Search Modalities\n\nThe review chamber supports multiple search approaches, building on knowledge-locator patterns.\n\n### 1. Semantic Search\n\nFind entries by meaning, not just keywords.\n\n```bash\n# Find decisions about authentication\n/review-room search \"how do we handle user authentication\" --type semantic\n\n# Returns entries about JWT, sessions, OAuth even if those exact words not used\n```\n\n**Implementation**:\n```python\ndef semantic_search(query, entries):\n    \"\"\"Search by meaning using embeddings or keyword expansion.\"\"\"\n\n    # Expand query with related terms\n    expanded = expand_query(query)\n    # \"authentication\" → [\"auth\", \"login\", \"session\", \"jwt\", \"oauth\"]\n\n    results = []\n    for entry in entries:\n        score = compute_semantic_similarity(expanded, entry.content)\n        if score > 0.3:  # Threshold\n            results.append((entry, score))\n\n    return sorted(results, key=lambda x: x[1], reverse=True)\n```\n\n### 2. Spatial Search\n\nNavigate by room and location in the palace.\n\n```bash\n# Browse decisions room\n/review-room list --room decisions\n\n# Find entries in patterns room with specific tags\n/review-room list --room patterns --tags api,error-handling\n```\n\n**Room Navigation**:\n```\nreview-chamber/\n├── decisions/     → Architectural choices\n│   └── jwt-auth.md\n│   └── api-versioning.md\n├── patterns/      → Recurring solutions\n│   └── retry-logic.md\n│   └── error-responses.md\n├── standards/     → Quality examples\n│   └── code-review-checklist.md\n└── lessons/       → Learnings\n    └── outage-2025-01.md\n```\n\n### 3. Temporal Search\n\nFind entries by time or PR timeline.\n\n```bash\n# Recent entries\n/review-room search --since \"2025-01-01\"\n\n# Entries from specific PR range\n/review-room search --pr-range 40-50\n\n# Most accessed entries\n/review-room search --sort-by access_count\n```\n\n### 4. Associative Search\n\nFollow connections between entries.\n\n```bash\n# Find entries related to specific entry\n/review-room related <entry_id>\n\n# Explore connection graph\n/review-room graph --start jwt-auth --depth 2\n```\n\n**Connection Types**:\n- `related_rooms` - Links to other palace rooms\n- `connected_concepts` - Bidirectional concept links\n- `source_pr` - Link back to GitHub PR\n- `tags` - Shared tag connections\n\n### 5. Contextual Search\n\nSurface relevant entries based on current work context.\n\n```bash\n# When in auth/ directory\n/review-room context auth/\n\n# Returns:\n# - Past decisions about authentication\n# - Known patterns in this code area\n# - Relevant standards to follow\n```\n\n## Search Filters\n\n### By Room Type\n\n```bash\n/review-room search \"query\" --room decisions\n/review-room search \"query\" --room patterns\n/review-room search \"query\" --room standards\n/review-room search \"query\" --room lessons\n```\n\n### By Tags\n\n```bash\n# Single tag\n/review-room search \"query\" --tags security\n\n# Multiple tags (AND)\n/review-room search \"query\" --tags security,api\n\n# Multiple tags (OR)\n/review-room search \"query\" --tags-any security,performance\n```\n\n### By Participants\n\n```bash\n# Entries from reviews by specific person\n/review-room search \"query\" --participant @username\n\n# Entries where specific reviewer participated\n/review-room search \"query\" --reviewer @techleader\n```\n\n### By Source PR\n\n```bash\n# From specific PR\n/review-room search --pr 42\n\n# From PR range\n/review-room search --pr-range 40-50\n```\n\n### By Time\n\n```bash\n# Since date\n/review-room search \"query\" --since 2025-01-01\n\n# Before date\n/review-room search \"query\" --before 2025-06-01\n\n# Date range\n/review-room search \"query\" --since 2025-01-01 --before 2025-06-01\n```\n\n## Proactive Surfacing\n\nAutomatically surface relevant knowledge at key moments.\n\n### On PR Creation\n\nWhen creating a PR in a code area with relevant history:\n\n```markdown\n## 📚 Relevant Review Knowledge\n\nYour PR touches files in `auth/`. Here's relevant knowledge:\n\n### Past Decisions\n| PR | Decision | Room |\n|----|----------|------|\n| #42 | JWT over sessions | decisions/jwt-auth |\n| #67 | Token refresh pattern | patterns/token-refresh |\n\n### Quality Standards\n- API error format: See standards/api-errors\n- Auth test coverage: See standards/auth-testing\n\n### Known Patterns\n- Token refresh race condition: patterns/token-refresh-race\n```\n\n### On Code Review\n\nWhen reviewing code in area with history:\n\n```markdown\n## 💡 Review Context\n\nThis PR modifies authentication code. Consider:\n\n### Prior Decisions\n- JWT tokens chosen for stateless scaling (#42)\n- Refresh tokens must be rotated (#67)\n\n### Common Issues\n- Token validation bypass (seen in #38)\n- Missing rate limiting (pattern #12)\n```\n\n### On Bug Investigation\n\nWhen investigating bugs in documented areas:\n\n```markdown\n## 🔍 Related Knowledge\n\nDebugging issue in auth flow. Review chamber has:\n\n### Lessons Learned\n- Outage from token expiry misconfiguration (lessons/auth-outage-2025)\n- Race condition in refresh (patterns/token-refresh-race)\n\n### Related Decisions\n- Why we use JWT: decisions/jwt-auth\n```\n\n## Search Result Format\n\n### Summary View (Default)\n\n```markdown\n## Search Results: \"authentication\"\n\nFound 5 entries in review-chamber:\n\n| Room | Title | PR | Date |\n|------|-------|-----|------|\n| decisions | JWT over sessions | #42 | 2025-01-15 |\n| patterns | Token refresh pattern | #67 | 2025-02-20 |\n| patterns | Rate limiting | #55 | 2025-01-28 |\n| standards | Auth testing | #48 | 2025-01-20 |\n| lessons | Token expiry outage | #89 | 2025-03-01 |\n```\n\n### Detail View\n\n```markdown\n## Entry: decisions/jwt-auth\n\n**Source PR:** #42 - Add user authentication\n**Date:** 2025-01-15\n**Participants:** @alice, @bob, @securityteam\n**Tags:** authentication, jwt, security, architecture\n\n### Decision\nChose JWT tokens over server-side sessions for stateless scaling.\n\n### Context\n- Reviewer asked about session persistence\n- Author explained horizontal scaling requirements\n- Security team approved with refresh token requirement\n\n### Captured Knowledge\n- **Pattern:** JWT + refresh tokens for stateless auth\n- **Tradeoff:** Complexity vs. horizontal scaling\n- **Application:** All API authentication\n\n### Connected\n- [[auth-patterns]] - Workshop patterns\n- [[security-adr-003]] - Library ADR\n- patterns/token-refresh - Related pattern\n```\n\n## CLI Integration\n\n### palace_manager.py Extension\n\n```bash\n# Search review chamber\npython scripts/palace_manager.py search \"authentication\" \\\n  --palace <project_id> \\\n  --room review-chamber \\\n  --subroom decisions \\\n  --type semantic\n\n# List with filters\npython scripts/palace_manager.py list-reviews \\\n  --palace <project_id> \\\n  --room patterns \\\n  --tags api \\\n  --since 2025-01-01\n\n# Export for documentation\npython scripts/palace_manager.py export-reviews \\\n  --palace <project_id> \\\n  --format markdown \\\n  --output docs/review-decisions.md\n```\n\n## Performance Considerations\n\n### Indexing\n\n```python\n# Maintain search indexes\n- Tag index: tag → [entry_ids]\n- Room index: room → [entry_ids]\n- Temporal index: date → [entry_ids]\n- Participant index: user → [entry_ids]\n- Embedding index: entry_id → vector (optional)\n```\n\n### Caching\n\n```python\n# Cache frequently accessed entries\n- LRU cache for recent searches\n- Pre-compute hot entry summaries\n- Background index updates\n```\n\n### Limits\n\n```python\n# Search result limits\nMAX_RESULTS = 50  # Per search\nMAX_DEPTH = 3     # For graph traversal\nTIMEOUT = 5000    # ms for search operations\n```\n\nFile v1.9.14:skill-card.md\n\n## Description: <br>\nCaptures and retrieves PR-review findings in memory palaces so teams can store architectural decisions, patterns, and standards for future reference. <br>\n\nThis skill is ready for commercial/non-commercial use. <br>\n\n## Publisher: <br>\n[athola](https://clawhub.ai/user/athola) <br>\n\n### License/Terms of Use: <br>\nMIT-0 <br>\n\n\n## Use Case: <br>\nDevelopers and engineering teams use this skill after PR reviews to decide which findings merit capture, organize durable review knowledge into memory-palace rooms, and retrieve past decisions, patterns, standards, and lessons for future work. <br>\n\n### Deployment Geography for Use: <br>\nGlobal <br>\n\n## Known Risks and Mitigations: <br>\nRisk: PR review discussions may include secrets, private personnel details, or sensitive security information that should not be retained verbatim. <br>\nMitigation: Define retention, deletion, and export rules before enabling automatic capture, and avoid capturing sensitive details in stored review knowledge. <br>\nRisk: Stored review knowledge can become misleading if outdated decisions or patterns are surfaced without review. <br>\nMitigation: Review captured entries periodically, prune outdated material, and maintain links between related decisions, standards, and lessons. <br>\n\n\n## Reference(s): <br>\n- [ClawHub skill page](https://clawhub.ai/athola/skills/nm-memory-palace-review-chamber) <br>\n- [Clawdis homepage](https://github.com/athola/claude-night-market/tree/master/plugins/memory-palace) <br>\n- [Capture Workflow Module](modules/capture-workflow.md) <br>\n- [Evaluation Criteria Module](modules/evaluation-criteria.md) <br>\n- [Search Patterns Module](modules/search-patterns.md) <br>\n\n\n## Skill Output: <br>\n**Output Type(s):** [guidance, markdown, shell commands, configuration] <br>\n**Output Format:** [Markdown guidance with structured examples and inline command snippets] <br>\n**Output Parameters:** [1D] <br>\n**Other Properties Related to Output:** [Documentation-only skill; outputs are intended for agent-guided capture and retrieval workflows.] <br>\n\n## Skill Version(s): <br>\n1.9.14 (source: server release metadata) <br>\n\n## Ethical Considerations: <br>\nUsers should evaluate whether this skill is appropriate for their environment, review any generated or modified files before relying on them, and apply their organization's safety, security, and compliance requirements before deployment. <br>\n\nArchive v1.9.13: 6 files, 13800 bytes\n\nFiles: modules/capture-workflow.md (6668b), modules/evaluation-criteria.md (7010b), modules/search-patterns.md (7517b), skill-card.md (2467b), SKILL.md (9372b), _meta.json (151b)\n\nFile v1.9.13:SKILL.md\n\n---\nname: review-chamber\ndescription: |\n  Captures and retrieves PR-review findings in memory palaces. Use after PR review to store architectural decisions, patterns, and standards for future reference\nversion: 1.9.8\nmetadata: {\"openclaw\": {\"homepage\": \"https://github.com/athola/claude-night-market/tree/master/plugins/memory-palace\", \"emoji\": \"\\ud83e\\udd9e\", \"requires\": {\"config\": [\"night-market.memory-palace:knowledge-intake\", \"night-market.sanctum:pr-review\"]}}}\nsource: claude-night-market\nsource_plugin: memory-palace\n---\n\n> **Night Market Skill** — ported from [claude-night-market/memory-palace](https://github.com/athola/claude-night-market/tree/master/plugins/memory-palace). For the full experience with agents, hooks, and commands, install the Claude Code plugin.\n\n\n## Table of Contents\n\n- [Overview](#overview)\n- [Room Structure](#room-structure)\n- [Workflow Phases](#workflow-phases)\n- [Phase 1: Knowledge Detection](#phase-1:-knowledge-detection)\n- [Knowledge Detection Checklist](#knowledge-detection-checklist)\n- [Phase 2: Classification](#phase-2:-classification)\n- [Phase 3: Capture](#phase-3:-capture)\n- [Decision Title](#decision-title)\n- [Decision](#decision)\n- [Context (from PR discussion)](#context-(from-pr-discussion))\n- [Captured Knowledge](#captured-knowledge)\n- [Connected Concepts](#connected-concepts)\n- [Phase 4: Integration](#phase-4:-integration)\n- [Usage Examples](#usage-examples)\n- [Capture After PR Review](#capture-after-pr-review)\n- [Search Past Decisions](#search-past-decisions)\n- [Surface Relevant Knowledge](#surface-relevant-knowledge)\n- [Relevant Review Knowledge](#relevant-review-knowledge)\n- [Integration Points](#integration-points)\n- [With sanctum:pr-review](#with-sanctum:pr-review)\n- [With knowledge-intake](#with-knowledge-intake)\n- [With knowledge-locator](#with-knowledge-locator)\n- [Evaluation Rubric](#evaluation-rubric)\n- [Worth Capturing (Score ≥ 60)](#worth-capturing-(score-≥-60))\n- [Skip (Score < 60)](#skip-(score-<-60))\n- [CLI Reference](#cli-reference)\n- [Best Practices](#best-practices)\n\n\n# PR Review Chamber Skill\n\nCapture, organize, and retrieve knowledge from PR reviews within project memory palaces.\n\n\n## When To Use\n\n- Capturing PR review knowledge for future reference\n- Building review pattern libraries from past reviews\n\n## When NOT To Use\n\n- Quick self-reviews of trivial changes\n- Automated CI checks that cover the review scope\n\n## Overview\n\nThe 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.\n\n## Room Structure\n\n```\nreview-chamber/\n├── decisions/      # Architectural choices from PR discussions\n├── patterns/       # Recurring issues and their solutions\n├── standards/      # Quality bar examples and coding conventions\n└── lessons/        # Post-mortems and learnings\n```\n**Verification:** Run the command with `--help` flag to verify availability.\n\n## Workflow Phases\n\n### Phase 1: Knowledge Detection\n\nAfter a PR review completes, evaluate findings for knowledge capture:\n\n```markdown\n## Knowledge Detection Checklist\n\nFor each finding from sanctum:pr-review, evaluate:\n\n- [ ] **Novelty**: Is this a new pattern or first occurrence?\n- [ ] **Applicability**: Will this affect future PRs in this area?\n- [ ] **Durability**: Is this architectural (capture) or tactical (skip)?\n- [ ] **Connectivity**: Does it link to existing palace rooms?\n```\n**Verification:** Run the command with `--help` flag to verify availability.\n\n### Phase 2: Classification\n\nRoute findings to appropriate subrooms:\n\n| Finding Type | Target Room | Criteria |\n|-------------|-------------|----------|\n| Architectural choice | `decisions/` | BLOCKING and architectural context |\n| Recurring issue | `patterns/` | Seen before or likely to recur |\n| Quality example | `standards/` | Exemplifies coding standards |\n| Learning/insight | `lessons/` | Retrospective or post-mortem |\n\n### Phase 3: Capture\n\nCreate structured entry with:\n\n```yaml\n---\nsource_pr: \"#42 - Add authentication\"\ndate: 2025-01-15\nparticipants: [author, reviewer1, reviewer2]\npalace_location: review-chamber/decisions\nrelated_rooms: [workshop/auth-patterns, library/security-adr]\ntags: [authentication, jwt, security]\n---\n\n## Decision Title\n\n### Decision\nChose JWT tokens over server-side sessions.\n\n### Context (from PR discussion)\n- Reviewer asked: \"Why not use sessions?\"\n- Author explained: stateless scaling requirements\n- Discussion refined: added refresh token rotation\n\n### Captured Knowledge\n- **Pattern**: JWT + refresh tokens for stateless auth\n- **Tradeoff**: Complexity vs. horizontal scaling\n- **Application**: Use for all API authentication\n\n### Connected Concepts\n- [[auth-patterns]] - Updated with JWT best practices\n- [[security-adr-003]] - Referenced this decision\n```\n**Verification:** Run the command with `--help` flag to verify availability.\n\n### Phase 4: Integration\n\nAfter capture, update related palace rooms:\n\n1. Add bidirectional links to related entries\n2. Update tags in project palace index\n3. Notify if this contradicts existing entries\n\n## Usage Examples\n\n### Capture After PR Review\n\n```bash\n# Automatic: sanctum:pr-review triggers capture\n/pr-review 42\n# → Review posted to GitHub\n# → Knowledge capture evaluates findings\n# → Significant decisions stored in review-chamber\n\n# Manual: Explicitly capture from PR\n/review-room capture 42 --room decisions\n```\n**Verification:** Run the command with `--help` flag to verify availability.\n\n### Search Past Decisions\n\n```bash\n# Find authentication decisions\n/review-room search \"authentication\" --room decisions\n\n# Find patterns in a specific area\n/review-room search \"error handling\" --room patterns --tags api\n\n# List recent entries\n/review-room list --limit 10 --room standards\n```\n**Verification:** Run the command with `--help` flag to verify availability.\n\n### Surface Relevant Knowledge\n\nWhen starting work in a code area:\n\n```markdown\n## Relevant Review Knowledge\n\nStarting work in `auth/` directory...\n\n**Past Decisions:**\n- [#42] JWT token decision → decisions/jwt-over-sessions\n- [#67] Rate limiting pattern → patterns/api-throttling\n\n**Quality Standards:**\n- [#55] Error response format → standards/api-errors\n\n**Known Patterns:**\n- [#38] Token refresh edge case → patterns/token-refresh-race\n```\n**Verification:** Run the command with `--help` flag to verify availability.\n\n## Integration Points\n\n### With sanctum:pr-review\n\nThe review-chamber integrates after Phase 6 (Generate Report):\n\n```\n**Verification:** Run the command with `--help` flag to verify availability.\nPhase 6: Generate Report\n    ↓\n[HOOK] Evaluate findings for knowledge capture\n    ↓\n    For each significant finding:\n    ├── Classify into room type\n    ├── Create ReviewEntry\n    ├── Add to project palace\n    └── Update connections\n    ↓\nPhase 7: Post to GitHub\n```\n**Verification:** Run the command with `--help` flag to verify availability.\n\n### With knowledge-intake\n\nUses the same evaluation framework:\n\n| Criterion | Weight | PR Review Application |\n|-----------|--------|----------------------|\n| Novelty | 25% | New pattern or first occurrence |\n| Applicability | 30% | Affects future PRs in this area |\n| Durability | 20% | Architectural vs tactical |\n| Connectivity | 15% | Links to existing rooms |\n| Authority | 10% | Senior reviewer or domain expert |\n\n### With knowledge-locator\n\nExtends search to include review-chamber:\n\n```bash\npython scripts/palace_manager.py search \"authentication\" \\\n  --palace project-name \\\n  --room review-chamber \\\n  --type semantic\n```\n**Verification:** Run `python --version` to verify Python environment.\n\n## Evaluation Rubric\n\n### Worth Capturing (Score ≥ 60)\n\n- **Architectural decisions** with documented rationale\n- **Recurring patterns** seen in 2+ PRs\n- **Security/performance** critical findings\n- **Domain knowledge** that explains business logic\n- **Convention changes** that affect future code\n\n### Skip (Score < 60)\n\n- One-off tactical fixes\n- Style preferences without rationale\n- Obvious bugs without pattern\n- External dependency issues\n- Temporary workarounds\n\n## CLI Reference\n\n```bash\n# Capture knowledge from PR\n/review-room capture <pr_number> [--room <room_type>] [--tags <tags>]\n\n# Search review chamber\n/review-room search \"<query>\" [--room <room_type>] [--tags <tags>]\n\n# List entries\n/review-room list [--room <room_type>] [--limit N]\n\n# View entry details\n/review-room view <entry_id>\n\n# Export for documentation\n/review-room export [--format markdown|json] [--room <room_type>]\n\n# Statistics\n/review-room stats [--palace <palace_id>]\n```\n**Verification:** Run the command with `--help` flag to verify availability.\n\n## Best Practices\n\n1. **Capture decisions immediately** - Context is freshest right after review\n2. **Link related entries** - Build the knowledge graph\n3. **Use consistent tags** - Enable cross-project discovery\n4. **Review periodically** - Prune outdated entries\n5. **Surface proactively** - Show relevant knowledge when starting related work\n\n## Module Reference\n\n- See `modules/capture-workflow.md` for detailed capture process\n- See `modules/evaluation-criteria.md` for knowledge worth assessment\n- See `modules/search-patterns.md` for query optimization\n\nFile v1.9.13:_meta.json\n\n{\n  \"ownerId\": \"kn7d107jg9jv602h9ytsegydq184a42s\",\n  \"slug\": \"nm-memory-\n\nArchive v1.9.12: 6 files, 13743 bytes\n\nFiles: modules/capture-workflow.md (6668b), modules/evaluation-criteria.md (7010b), modules/search-patterns.md (7517b), skill-card.md (2437b), SKILL.md (9372b), _meta.json (151b)\n\nArchive v1.0.3: 6 files, 13641 bytes\n\nFiles: modules/capture-workflow.md (6668b), modules/evaluation-criteria.md (7010b), modules/search-patterns.md (7517b), skill-card.md (2165b), SKILL.md (9372b), _meta.json (150b)\n\nArchive v1.0.2: 6 files, 13821 bytes\n\nFiles: modules/capture-workflow.md (6668b), modules/evaluation-criteria.md (7008b), modules/search-patterns.md (7517b), skill-card.md (2344b), SKILL.md (9536b), _meta.json (150b)\n\nArchive v1.0.1: 5 files, 12601 bytes\n\nFiles: modules/capture-workflow.md (6668b), modules/evaluation-criteria.md (7008b), modules/search-patterns.md (7517b), SKILL.md (9536b), _meta.json (150b)\n\nArchive v1.0.0: 5 files, 12600 bytes\n\nFiles: modules/capture-workflow.md (6668b), modules/evaluation-criteria.md (7008b), modules/search-patterns.md (7517b), SKILL.md (9536b), _meta.json (150b)","readmeExcerpt":"Skill: review-chamber Owner: athola Summary: Captures and retrieves PR-review findings in memory palaces. Use after PR review to store architectural decisions, patterns, and standards for future reference Tags: latest:1.9.19 Version history: v1.9.19 | 2026-08-26T13:17:14.115Z | user Release v1.9.19 v1.9.17 | 2026-07-30T05:37:38.039Z | user Release v1.9.17 v1.9.16 | 2026-07-14T19:54:21.680Z | user Release v1.9.16 v1.9","codeSnippets":[],"executableExamples":[{"language":"text","snippet":"review-chamber/\n├── decisions/      # Architectural choices from PR discussions\n├── patterns/       # Recurring issues and their solutions\n├── standards/      # Quality bar examples and coding conventions\n└── lessons/        # Post-mortems and learnings"},{"language":"markdown","snippet":"## Knowledge Detection Checklist\n\nFor each finding from sanctum:pr-review, evaluate:\n\n- [ ] **Novelty**: Is this a new pattern or first occurrence?\n- [ ] **Applicability**: Will this affect future PRs in this area?\n- [ ] **Durability**: Is this architectural (capture) or tactical (skip)?\n- [ ] **Connectivity**: Does it link to existing palace rooms?"},{"language":"yaml","snippet":"---\nsource_pr: \"#42 - Add authentication\"\ndate: 2025-01-15\nparticipants: [author, reviewer1, reviewer2]\npalace_location: review-chamber/decisions\nrelated_rooms: [workshop/auth-patterns, library/security-adr]\ntags: [authentication, jwt, security]\n---\n\n## Decision Title\n\n### Decision\nChose JWT tokens over server-side sessions.\n\n### Context (from PR discussion)\n- Reviewer asked: \"Why not use sessions?\"\n- Author explained: stateless scaling requirements\n- Discussion refined: added refresh token rotation\n\n### Captured Knowledge\n- **Pattern**: JWT + refresh tokens for stateless auth\n- **Tradeoff**: Complexity vs. horizontal scaling\n- **Application**: Use for all API authentication\n\n### Connected Concepts\n- [[auth-patterns]] - Updated with JWT best practices\n- [[security-adr-003]] - Referenced this decision"},{"language":"bash","snippet":"# Automatic: sanctum:pr-review triggers capture\n/pr-review 42\n# → Review posted to GitHub\n# → Knowledge capture evaluates findings\n# → Significant decisions stored in review-chamber\n\n# Manual: Explicitly capture from PR\n/review-room capture 42 --room decisions"},{"language":"bash","snippet":"# Find authentication decisions\n/review-room search \"authentication\" --room decisions\n\n# Find patterns in a specific area\n/review-room search \"error handling\" --room patterns --tags api\n\n# List recent entries\n/review-room list --limit 10 --room standards"},{"language":"markdown","snippet":"## Relevant Review Knowledge\n\nStarting work in `auth/` directory...\n\n**Past Decisions:**\n- [#42] JWT token decision → decisions/jwt-over-sessions\n- [#67] Rate limiting pattern → patterns/api-throttling\n\n**Quality Standards:**\n- [#55] Error response format → standards/api-errors\n\n**Known Patterns:**\n- [#38] Token refresh edge case → patterns/token-refresh-race"}],"parameters":null,"dependencies":[],"permissions":[],"extractedFiles":[{"path":"SKILL.md","content":"---\nname: review-chamber\ndescription: |\n  Captures and retrieves PR-review findings in memory palaces. Use after PR review to store architectural decisions, patterns, and standards for future reference\nversion: 1.9.8\nmetadata: {\"openclaw\": {\"homepage\": \"https://github.com/athola/claude-night-market/tree/master/plugins/memory-palace\", \"emoji\": \"\\ud83e\\udd9e\", \"requires\": {\"config\": [\"night-market.memory-palace:knowledge-intake\", \"night-market.sanctum:pr-review\"]}}}\nsource: claude-night-market\nsource_plugin: memory-palace\n---\n\n> **Night Market Skill** — ported from [claude-night-market/memory-palace](https://github.com/athola/claude-night-market/tree/master/plugins/memory-palace). For the full experience with agents, hooks, and commands, install the Claude Code plugin.\n\n\n## Table of Contents\n\n- [Overview](#overview)\n- [Room Structure](#room-structure)\n- [Workflow Phases](#workflow-phases)\n- [Phase 1: Knowledge Detection](#phase-1:-knowledge-detection)\n- [Knowledge Detection Checklist](#knowledge-detection-checklist)\n- [Phase 2: Classification](#phase-2:-classification)\n- [Phase 3: Capture](#phase-3:-capture)\n- [Decision Title](#decision-title)\n- [Decision](#decision)\n- [Context (from PR discussion)](#context-(from-pr-discussion))\n- [Captured Knowledge](#captured-knowledge)\n- [Connected Concepts](#connected-concepts)\n- [Phase 4: Integration](#phase-4:-integration)\n- [Usage Examples](#usage-examples)\n- [Capture After PR Review](#capture-after-pr-review)\n- [Search Past Decisions](#search-past-decisions)\n- [Surface Relevant Knowledge](#surface-relevant-knowledge)\n- [Relevant Review Knowledge](#relevant-review-knowledge)\n- [Integration Points](#integration-points)\n- [With sanctum:pr-review](#with-sanctum:pr-review)\n- [With knowledge-intake](#with-knowledge-intake)\n- [With knowledge-locator](#with-knowledge-locator)\n- [Evaluation Rubric](#evaluation-rubric)\n- [Worth Capturing (Score ≥ 60)](#worth-capturing-(score-≥-60))\n- [Skip (Score < 60)](#skip-(score-<-60))\n- [CLI Reference](#cli-reference)\n- [Best Practices](#best-practices)\n\n\n# PR Review Chamber Skill\n\nCapture, organize, and retrieve knowledge from PR reviews within project memory palaces.\n\n\n## When To Use\n\n- Capturing PR review knowledge for future reference\n- Building review pattern libraries from past reviews\n\n## When NOT To Use\n\n- Quick self-reviews of trivial changes\n- Automated CI checks that cover the review scope\n\n## Overview\n\nThe 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.\n\n## Room Structure\n\n```\nreview-chamber/\n├── decisions/      # Architectural choices from PR discussions\n├── patterns/       # Recurring issues and their solutions\n├── standards/      # Quality bar examples and coding conventions\n└── lessons/        # Post-mortems and learnings\n```\n**Verification:** Run the command with `--help` flag to verify availability.\n\n#"},{"path":"_meta.json","content":"{\n  \"ownerId\": \"kn7d107jg9jv602h9ytsegydq184a42s\",\n  \"slug\": \"nm-memory-palace-review-chamber\",\n  \"version\": \"1.9.19\",\n  \"publishedAt\": 1787750234115\n}"},{"path":"modules/capture-workflow.md","content":"# Capture Workflow Module\n\nDetailed workflow for capturing PR review knowledge into the review chamber.\n\n## Trigger Points\n\nKnowledge capture can be triggered:\n\n1. **Automatically**: After `sanctum:pr-review` completes Phase 6\n2. **Manually**: Via `/review-room capture` command\n3. **Retroactively**: From existing PR review threads\n\n## Automatic Capture Flow\n\n```mermaid\ngraph TD\n    A[PR Review Completed] --> B{Has BLOCKING findings?}\n    B -->|Yes| C[Evaluate each finding]\n    B -->|No| D{Has IN-SCOPE findings?}\n    D -->|Yes| C\n    D -->|No| E[Skip capture]\n\n    C --> F{Score ≥ 60?}\n    F -->|Yes| G[Classify room type]\n    F -->|No| E\n\n    G --> H[Create ReviewEntry]\n    H --> I[Add to project palace]\n    I --> J[Update connections]\n    J --> K[Report captured entries]\n```\n\n## Finding Evaluation\n\nFor each PR finding, compute a capture score:\n\n### Novelty Check (25 points max)\n\n```python\ndef evaluate_novelty(finding, existing_entries):\n    \"\"\"Check if finding represents new knowledge.\"\"\"\n\n    # Search existing entries for similar content\n    similar = search_similar(finding.content, existing_entries)\n\n    if not similar:\n        return 25  # Completely novel\n\n    best_match = similar[0]\n    if best_match.similarity < 0.5:\n        return 20  # Mostly novel\n    elif best_match.similarity < 0.8:\n        return 10  # Partial overlap - may add context\n    else:\n        return 0   # Duplicate - skip\n```\n\n### Applicability Check (30 points max)\n\n```python\ndef evaluate_applicability(finding, project_context):\n    \"\"\"Estimate future relevance.\"\"\"\n\n    score = 0\n\n    # Affects common code paths\n    if finding.file in project_context.hot_paths:\n        score += 15\n\n    # Relates to core domain\n    if finding.category in project_context.core_domains:\n        score += 10\n\n    # Has broad applicability\n    if len(finding.affected_files) > 3:\n        score += 5\n\n    return min(30, score)\n```\n\n### Durability Check (20 points max)\n\n```python\ndef evaluate_durability(finding):\n    \"\"\"Distinguish architectural from tactical.\"\"\"\n\n    # Architectural indicators\n    architectural_keywords = [\n        'architecture', 'design', 'pattern', 'convention',\n        'security', 'performance', 'scalability', 'api'\n    ]\n\n    # Tactical indicators\n    tactical_keywords = [\n        'typo', 'formatting', 'temporary', 'workaround',\n        'quick fix', 'hotfix', 'revert'\n    ]\n\n    content_lower = finding.content.lower()\n\n    arch_matches = sum(1 for k in architectural_keywords if k in content_lower)\n    tact_matches = sum(1 for k in tactical_keywords if k in content_lower)\n\n    if arch_matches > tact_matches:\n        return 20  # Architectural\n    elif arch_matches == tact_matches:\n        return 10  # Mixed\n    else:\n        return 0   # Tactical - skip\n```\n\n### Connectivity Check (15 points max)\n\n```python\ndef evaluate_connectivity(finding, palace):\n    \"\"\"Check links to existing knowledge.\"\"\"\n\n    score = 0\n\n    # Links to existing ADRs\n    if finding.references_adr:\n        sc"},{"path":"modules/evaluation-criteria.md","content":"# Evaluation Criteria Module\n\nDetailed criteria for evaluating whether PR review findings are worth capturing.\n\n## Evaluation Framework\n\nBased on memory-palace:knowledge-intake, adapted for PR reviews.\n\n### Scoring Summary\n\n| Criterion | Weight | Max Points |\n|-----------|--------|------------|\n| Novelty | 25% | 25 |\n| Applicability | 30% | 30 |\n| Durability | 20% | 20 |\n| Connectivity | 15% | 15 |\n| Authority | 10% | 10 |\n| **Total** | 100% | 100 |\n\n### Capture Thresholds\n\n| Score Range | Action |\n|-------------|--------|\n| 80-100 | **Evergreen**: Capture immediately, permanent retention |\n| 60-79 | **Valuable**: Capture, standard retention |\n| 40-59 | **Reference**: Consider manual capture |\n| 0-39 | **Skip**: Not worth capturing |\n\n## Detailed Criteria\n\n### 1. Novelty (25 points)\n\n**Question**: Is this knowledge new to the project?\n\n| Score | Description |\n|-------|-------------|\n| 25 | Completely novel - first time this pattern/decision documented |\n| 20 | Mostly novel - adds significant new context |\n| 15 | Moderate novelty - extends existing knowledge |\n| 10 | Low novelty - mostly overlaps with existing |\n| 5 | Minimal novelty - slight variation |\n| 0 | Duplicate - already captured |\n\n**Examples**:\n\n```markdown\n## High Novelty (25 points)\n- First authentication architecture decision\n- New error handling pattern for async code\n- Security vulnerability pattern not seen before\n\n## Moderate Novelty (15 points)\n- Alternative approach to existing pattern\n- Additional context for documented decision\n- Edge case for known pattern\n\n## Low/No Novelty (0-5 points)\n- Same bug found in different file\n- Style preference already in standards\n- Known limitation documented elsewhere\n```\n\n### 2. Applicability (30 points)\n\n**Question**: Will this affect future development?\n\n| Score | Description |\n|-------|-------------|\n| 30 | Core domain - affects all future work in area |\n| 25 | High applicability - affects most related PRs |\n| 20 | Moderate - affects some future work |\n| 15 | Limited - specific to few use cases |\n| 10 | Narrow - rarely applicable |\n| 0 | One-off - unique circumstance |\n\n**Indicators of High Applicability**:\n\n```markdown\n## High Applicability Signals\n- Affects shared/core code paths\n- Relates to API contracts\n- Security or performance critical\n- Multiple files/components affected\n- Frequently modified code area\n\n## Low Applicability Signals\n- One-off migration code\n- Deprecated feature\n- External dependency quirk\n- Test-only concern\n- Configuration edge case\n```\n\n### 3. Durability (20 points)\n\n**Question**: Is this architectural or tactical?\n\n| Score | Description |\n|-------|-------------|\n| 20 | Architectural - fundamental design choice |\n| 15 | Semi-permanent - likely to last years |\n| 10 | Medium-term - relevant for months |\n| 5 | Short-term - may change soon |\n| 0 | Tactical - temporary workaround |\n\n**Classification Guide**:\n\n```markdown\n## Architectural (20 points)\n- Technology choices (JWT vs sessions)\n- API design decisions\n- Data "},{"path":"modules/search-patterns.md","content":"# Search Patterns Module\n\nPatterns for searching and retrieving knowledge from the review chamber.\n\n## Search Modalities\n\nThe review chamber supports multiple search approaches, building on knowledge-locator patterns.\n\n### 1. Semantic Search\n\nFind entries by meaning, not just keywords.\n\n```bash\n# Find decisions about authentication\n/review-room search \"how do we handle user authentication\" --type semantic\n\n# Returns entries about JWT, sessions, OAuth even if those exact words not used\n```\n\n**Implementation**:\n```python\ndef semantic_search(query, entries):\n    \"\"\"Search by meaning using embeddings or keyword expansion.\"\"\"\n\n    # Expand query with related terms\n    expanded = expand_query(query)\n    # \"authentication\" → [\"auth\", \"login\", \"session\", \"jwt\", \"oauth\"]\n\n    results = []\n    for entry in entries:\n        score = compute_semantic_similarity(expanded, entry.content)\n        if score > 0.3:  # Threshold\n            results.append((entry, score))\n\n    return sorted(results, key=lambda x: x[1], reverse=True)\n```\n\n### 2. Spatial Search\n\nNavigate by room and location in the palace.\n\n```bash\n# Browse decisions room\n/review-room list --room decisions\n\n# Find entries in patterns room with specific tags\n/review-room list --room patterns --tags api,error-handling\n```\n\n**Room Navigation**:\n```\nreview-chamber/\n├── decisions/     → Architectural choices\n│   └── jwt-auth.md\n│   └── api-versioning.md\n├── patterns/      → Recurring solutions\n│   └── retry-logic.md\n│   └── error-responses.md\n├── standards/     → Quality examples\n│   └── code-review-checklist.md\n└── lessons/       → Learnings\n    └── outage-2025-01.md\n```\n\n### 3. Temporal Search\n\nFind entries by time or PR timeline.\n\n```bash\n# Recent entries\n/review-room search --since \"2025-01-01\"\n\n# Entries from specific PR range\n/review-room search --pr-range 40-50\n\n# Most accessed entries\n/review-room search --sort-by access_count\n```\n\n### 4. Associative Search\n\nFollow connections between entries.\n\n```bash\n# Find entries related to specific entry\n/review-room related <entry_id>\n\n# Explore connection graph\n/review-room graph --start jwt-auth --depth 2\n```\n\n**Connection Types**:\n- `related_rooms` - Links to other palace rooms\n- `connected_concepts` - Bidirectional concept links\n- `source_pr` - Link back to GitHub PR\n- `tags` - Shared tag connections\n\n### 5. Contextual Search\n\nSurface relevant entries based on current work context.\n\n```bash\n# When in auth/ directory\n/review-room context auth/\n\n# Returns:\n# - Past decisions about authentication\n# - Known patterns in this code area\n# - Relevant standards to follow\n```\n\n## Search Filters\n\n### By Room Type\n\n```bash\n/review-room search \"query\" --room decisions\n/review-room search \"query\" --room patterns\n/review-room search \"query\" --room standards\n/review-room search \"query\" --room lessons\n```\n\n### By Tags\n\n```bash\n# Single tag\n/review-room search \"query\" --tags security\n\n# Multiple tags (AND)\n/review-room search \"query\" --tags security,api\n\n# Multiple tags (OR"}],"languages":[],"docsSourceLabel":"CLAWHUB","editorialOverview":"Captures and retrieves PR-review findings in memory palaces. Use after PR review to store architectural decisions, patterns, and standards for future reference Skill: review-chamber Owner: athola Summary: Captures and retrieves PR-review findings in memory palaces. Use after PR review to store architectural decisions, patterns, and standards for future reference Tags: latest:1.9.19 Version history: v1.9.19 | 2026-08-26T13:17:14.115Z | user Release v1.9.19 v1.9.17 | 2026-07-30T05:37:38.039Z | user Release v1.9.17 v1.9.16 | 2026-07-14T19:54:21.680Z | user Release v1.9.16 v1.9","editorialQuality":{"score":100,"threshold":65,"status":"ready","wordCount":1017,"uniquenessScore":53,"reasons":[]}},"media":{"evidence":{"source":"no-media","verified":false,"confidence":"low","updatedAt":"2026-10-10T07:28:39.271Z","emptyReason":"No screenshots, media assets, or demo links are available."},"primaryImageUrl":null,"mediaAssetCount":0,"assets":[],"demoUrl":null},"ownerResources":{"evidence":{"source":"unclaimed","verified":false,"confidence":"low","updatedAt":"2026-10-10T07:28:39.271Z","emptyReason":"This page has not been claimed by the agent owner."},"hasCustomPage":false,"customPageUpdatedAt":null,"customLinks":[],"structuredLinks":{"docsUrl":null,"demoUrl":null,"supportUrl":null,"pricingUrl":null,"statusUrl":null},"customPage":null},"relatedAgents":{"evidence":{"source":"protocol-neighbors","verified":false,"confidence":"medium","updatedAt":"2026-10-10T09:08:01.570Z","emptyReason":null},"items":[{"id":"8ebccd8e-3863-4187-8355-c3f14e1f9edf","entityType":"agent","canonicalPath":"/agent/iofficeai-aionui","slug":"iofficeai-aionui","name":"AionUi","description":"Free, local, open-source 24/7 Cowork app and OpenClaw for Gemini CLI, Claude Code, Codex, OpenCode, Qwen Code, Goose CLI, Auggie, and more | 🌟 Star if you like it!","url":"https://github.com/iOfficeAI/AionUi","homepage":"https://www.aionui.com","source":"GITHUB_REPOS","protocols":["MCP","OPENCLAW"],"capabilities":[],"safetyScore":100,"overallRank":70,"updatedAt":"2026-10-09T19:11:12.944Z","createdAt":"2026-02-25T03:38:16.584Z","downloads":null},{"id":"b917f68a-ebff-438e-84f8-3f4b2494c0bc","entityType":"agent","canonicalPath":"/agent/activepieces-activepieces","slug":"activepieces-activepieces","name":"activepieces","description":"AI Agents & MCPs & AI Workflow Automation • (~400 MCP servers for AI agents) • AI Automation / AI Agent with MCPs • AI Workflows & AI Agents • MCPs for AI Agents","url":"https://github.com/activepieces/activepieces","homepage":"https://www.activepieces.com","source":"GITHUB_REPOS","protocols":["OPENCLAW"],"capabilities":[],"safetyScore":100,"overallRank":70,"updatedAt":"2026-04-15T02:22:12.426Z","createdAt":"2026-02-25T03:38:12.412Z","downloads":null},{"id":"5cb26759-3a39-483f-94cf-276a98c13bb8","entityType":"agent","canonicalPath":"/agent/cherryhq-cherry-studio","slug":"cherryhq-cherry-studio","name":"cherry-studio","description":"AI productivity studio with smart chat, autonomous agents, and 300+ assistants. Unified access to frontier LLMs","url":"https://github.com/CherryHQ/cherry-studio","homepage":"https://cherry-ai.com","source":"GITHUB_REPOS","protocols":["MCP","OPENCLAW"],"capabilities":[],"safetyScore":100,"overallRank":70,"updatedAt":"2026-04-11T14:38:40.986Z","createdAt":"2026-02-25T03:38:19.379Z","downloads":null},{"id":"6f6582d0-5d76-4f0f-b81d-86520247950b","entityType":"agent","canonicalPath":"/agent/copilotkit-copilotkit","slug":"copilotkit-copilotkit","name":"CopilotKit","description":"The Frontend for Agents & Generative UI. React + Angular","url":"https://github.com/CopilotKit/CopilotKit","homepage":"https://docs.copilotkit.ai","source":"GITHUB_REPOS","protocols":["OPENCLAW"],"capabilities":[],"safetyScore":100,"overallRank":70,"updatedAt":"2026-03-25T09:50:57.846Z","createdAt":"2026-02-25T03:39:14.617Z","downloads":null}],"links":{"hub":"/agent","source":"/agent/source/clawhub","protocols":[{"label":"OpenClaw","href":"/agent/protocol/openclew"}]}}}