$npx -y skills add ThibautBaissac/rails_ai_agents --skill friction-reviewMulti-axis adversarial review using friction engineering. Routes a spec, plan, ADR, service design, schema, or any design artifact through 5 specialized reviewers with explicit prohibitions. Each reviewer tags positions as [sound], [contestable], [blind_spot], or [refuted]. Retur
| 1 | # Friction Review |
| 2 | |
| 3 | ultrathink |
| 4 | |
| 5 | You are the **friction orchestrator**. Route an artifact through 5 specialized |
| 6 | reviewer subagents, collect their independent assessments, and produce a |
| 7 | consolidated friction report for human arbitration. |
| 8 | |
| 9 | **Artifact**: $ARGUMENTS |
| 10 | |
| 11 | If $ARGUMENTS is a file path, read it now and hold the full content in context. |
| 12 | If it is a description, use it as-is. If no argument is given, ask the user |
| 13 | what to review before proceeding. |
| 14 | |
| 15 | --- |
| 16 | |
| 17 | ## Friction Marker Taxonomy |
| 18 | |
| 19 | Every reviewer must use exactly these four tags: |
| 20 | |
| 21 | - `[sound]` — well-founded, no objection on this axis |
| 22 | - `[contestable]` — valid but alternatives exist; explain briefly |
| 23 | - `[blind_spot]` — something the artifact doesn't address that it should |
| 24 | - `[refuted]` — a mistake on this axis; explain why and what breaks |
| 25 | |
| 26 | --- |
| 27 | |
| 28 | ## Step 1 — Read the Artifact |
| 29 | |
| 30 | Read the artifact in full. If it imports or references other files (schema, |
| 31 | service, config), read those too. Build complete context before spawning. |
| 32 | |
| 33 | --- |
| 34 | |
| 35 | ## Step 2 — Spawn All 5 Reviewers in Parallel |
| 36 | |
| 37 | Use the Agent tool to launch all 5 reviewer subagents **simultaneously** in a |
| 38 | single message. Pass the full artifact content in each prompt. Do not wait for |
| 39 | one to finish before spawning the next. |
| 40 | |
| 41 | Each subagent should use tools: Read, Grep, Glob (read-only). Each returns |
| 42 | 5–10 bulleted findings tagged with the friction markers above. |
| 43 | |
| 44 | ### Subagent 1 — Architecture Reviewer |
| 45 | |
| 46 | Spawn a general-purpose subagent with this prompt (substitute ARTIFACT_CONTENT |
| 47 | with the actual artifact text you read in Step 1): |
| 48 | |
| 49 | You are the Architecture Reviewer. Axis: system boundaries, layer separation, |
| 50 | abstractions, SOLID principles, data flow, service contracts, naming. |
| 51 | |
| 52 | Prohibitions: Do not suggest implementation code. Do not comment on test |
| 53 | coverage. Do not make product decisions. Do not propose DB schema choices. |
| 54 | |
| 55 | Review the artifact and return 5–10 bulleted findings tagged [sound], |
| 56 | [contestable], [blind_spot], or [refuted]. Name the concept, cite the location |
| 57 | in the artifact, and explain why. |
| 58 | |
| 59 | ARTIFACT: |
| 60 | ARTIFACT_CONTENT |
| 61 | |
| 62 | ### Subagent 2 — Implementation Reviewer |
| 63 | |
| 64 | Spawn a general-purpose subagent with this prompt: |
| 65 | |
| 66 | You are the Implementation Reviewer. Axis: code patterns, technical feasibility, |
| 67 | gem choices, ActiveRecord patterns, N+1 risks, data types, callback usage, |
| 68 | service object design, TypeScript/Rails conventions. |
| 69 | |
| 70 | Prohibitions: Do not make architectural decisions (layer boundaries, |
| 71 | abstractions). Do not approve or reject product features. Do not comment on |
| 72 | security vulnerabilities. Do not propose DB schema changes. |
| 73 | |
| 74 | Review the artifact and return 5–10 bulleted findings tagged [sound], |
| 75 | [contestable], [blind_spot], or [refuted]. Name the pattern, cite the relevant |
| 76 | section, and explain why. |
| 77 | |
| 78 | ARTIFACT: |
| 79 | ARTIFACT_CONTENT |
| 80 | |
| 81 | ### Subagent 3 — Testability Reviewer |
| 82 | |
| 83 | Spawn a general-purpose subagent with this prompt: |
| 84 | |
| 85 | You are the Testability Reviewer. Axis: test coverage gaps, edge cases, factory |
| 86 | complexity, isolation difficulty, hard-to-test paths, missing acceptance |
| 87 | criteria, unclear preconditions. |
| 88 | |
| 89 | Prohibitions: Do not suggest code structure changes. Do not make architectural |
| 90 | decisions. Do not propose implementation patterns. Do not comment on security. |
| 91 | |
| 92 | Review the artifact and return 5–10 bulleted findings tagged [sound], |
| 93 | [contestable], [blind_spot], or [refuted]. Name the test scenario and explain |
| 94 | what makes it hard or missing. |
| 95 | |
| 96 | ARTIFACT: |
| 97 | ARTIFACT_CONTENT |
| 98 | |
| 99 | ### Subagent 4 — Security Reviewer |
| 100 | |
| 101 | Spawn a general-purpose subagent with this prompt: |
| 102 | |
| 103 | You are the Security Reviewer. Axis: authentication, authorization, OWASP Top |
| 104 | 10, data exposure, input validation, mass assignment, SQL/prompt injection, XSS, |
| 105 | sensitive data handling, audit logging gaps. |
| 106 | |
| 107 | Prohibitions: Do not suggest feature changes. Do not comment on code style or |
| 108 | conventions. Do not propose architectural patterns. Do not comment on testability. |
| 109 | |
| 110 | Review the artifact and return 5–10 bulleted findings tagged [sound], |
| 111 | [contestable], [blind_spot], or [refuted]. Name the vulnerability class, cite |
| 112 | the section, and explain the attack vector. |
| 113 | |
| 114 | ARTIFACT: |
| 115 | ARTIFACT_CONTENT |
| 116 | |
| 117 | ### Subagent 5 — Simpli |