agentleFS
thefrederiksenthefrederiksen/cc-director/.claude/skills/review-code/skill.md

review-code

Skill96 starsChanged 16 days agoMITView on GitHub

Review recent code changes for security issues, PII leaks, and bugs against CodingStyle.md. Triggers on "/review-code" or when called by commit skill.

We split this skill into the rules it gives an agent

41 rules. 0 are common, 19 are distinctive, and 22 are very specific to this project.

  • 0

    Common

    Most of the 54 edited versions we read keep these.

  • 19

    Distinctive

    This author's own choices. Worth a look.

  • 22

    Very specific

    Tied to their project's names, files or tools. Probably skip.

  • Common
  • Distinctive
  • Very specific
  1. Very specific:

    Use Bash tool to run: git diff --cached --name-only Then run: git diff --name-only Also run: git status to find untracked files.

    line 20
  2. Very specific:

    Use the Read tool to read: docs/CodingStyle.md

    line 29
  3. Distinctive:

    Do NOT skip this. Do NOT rely on memory.

    line 31
  4. Very specific:

    Check if docs/cencon/architecture_manifest.yaml exists using the Glob tool.

    line 75
  5. Very specific:

    If docs/cencon/architecture_manifest.yaml does NOT exist:

    line 77
  6. Very specific:

    Add SUGGESTION: "Consider adding CenCon documentation (docs/cencon/)"

    line 79
  7. Very specific:

    If docs/cencon/architecture_manifest.yaml EXISTS:

    line 82
  8. Distinctive:

    Read the manifest using the Read tool

    line 83
  9. Very specific:

    Use Bash to find the most recently modified .cs file in src/: git log -1 --format="%ai" -- "src//*.cs"

    line 85
  10. Very specific:

    Add BLOCKING issue: "CenCon architecture_manifest.yaml is outdated"

    line 91
  11. Very specific:

    Check if docs/cencon/security_profile.yaml exists using the Glob tool.

    line 99
  12. Very specific:

    If docs/cencon/security_profile.yaml does NOT exist:

    line 101
  13. Very specific:

    If docs/cencon/security_profile.yaml EXISTS:

    line 105
  14. Distinctive:

    Read the profile using the Read tool

    line 106
  15. Distinctive:

    If days since verification > threshold_days:

    line 110
  16. Distinctive:

    Add BLOCKING issue: "Security profile drift detected"

    line 111
  17. Distinctive:

    Check if public documentation needs updating based on the changes being reviewed.

    line 119
  18. Very specific:

    Read docs/public/index.json using the Read tool to get the current documentation manifest

    line 121
  19. Distinctive:

    IF the changes include NEW tools (new cc-* tool directories, new CLI executables):

    line 124
  20. Very specific:

    Check if docs/public/tools/overview.md was updated to include the new tool

    line 125
  21. Very specific:

    Check if docs/public/index.json references any new dedicated tool pages (if applicable)

    line 126
  22. Distinctive:

    If the new tool is NOT documented:

    line 127
  23. Distinctive:

    Add BLOCKING issue: "New tool [tool-name] added without documentation update"

    line 128
  24. Very specific:

    IF the changes include NEW features or NEW commands (new skills in .claude/skills/, new CLI subcommands, new major functionality):

    line 132
  25. Very specific:

    Check if corresponding docs/public/ pages exist or were updated

    line 133
  26. Distinctive:

    Add BLOCKING issue: "New feature [feature-name] added without documentation"

    line 135
  27. Distinctive:

    IF the changes are BUG FIXES or REFACTORS:

    line 139
  28. Distinctive:

    Check if the fix changes user-visible behavior (command syntax, output format, default values)

    line 140
  29. Distinctive:

    If behavior changed but docs not updated:

    line 141
  30. Distinctive:

    Add WARNING: "Bug fix changes user-visible behavior but docs not updated"

    line 142
  31. Very specific:

    IF docs/public/ files were modified:

    line 147
  32. Very specific:

    Verify docs/public/index.json is still valid:

    line 148
  33. Very specific:

    Every "file" path in index.json must point to an actual file in docs/public/

    line 149
  34. Very specific:

    No orphaned pages (files in docs/public/ without index.json entries, except index.json itself)

    line 150
  35. Distinctive:

    If invalid references found:

    line 151
  36. Very specific:

    Add BLOCKING issue: "docs/public/index.json has broken file references"

    line 152
  37. Very specific:

    IF none of the above conditions apply (no tool/feature/behavior changes):

    line 155
  38. Distinctive:

    Use the Read tool to read the full file

    line 161
  39. Distinctive:

    Use this exact format (plain text, no markdown tables):

    line 172
  40. Distinctive:

    Never use just the filename.

    line 204
  41. Distinctive:

    If NO PII is found, include this line in the report: PII Scan: CLEAN - No personal information detected in changed files.

    line 206

“Common” is measured: kept by at least 6 in 10 of the 54 edited versions of this file we could read. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.

Keep what fits and drop the rest. Your version, ready for your agents.
Files
skill.md

Code Review Skill

Review changed files against docs/CodingStyle.md and check for PII/personal information leaks.

This is a public repository. Every commit is visible to the world. The PII check is mandatory.

Triggers

Invoke with /review-code or when called by commit skill.

Workflow

STEP 1: Get files to review

Use Bash tool to run: git diff --cached --name-only Then run: git diff --name-only Also run: git status to find untracked files.

Collect ALL files from the output, not just .cs files. PII can appear in ANY file type: .cs, .xaml, .xaml.cs, .json, .md, .txt, .ps1, .bat, .sh, .config, .yaml, .yml, .xml, .csproj, etc.

STEP 2: Read the standards (MANDATORY)

Use the Read tool to read: docs/CodingStyle.md

Do NOT skip this. Do NOT rely on memory. Actually READ this file.

STEP 3: PII and Personal Information Scan (MANDATORY)

This is a PUBLIC REPOSITORY. Any personal information committed here is exposed to the entire internet.

For EVERY changed or untracked file, scan for ALL of the following:

BLOCKING PII (must NEVER be committed):

  • Real names of people (developers, employees, users, customers)
  • Email addresses (personal or corporate)
  • Usernames, account names, Windows user profile names (e.g., "jsmith", "jdoe")
  • File paths containing usernames (e.g., C:\Users\jsmith..., /home/jdoe/...)
  • Company names, organization names, internal project codenames
  • IP addresses (internal or external, not localhost/127.0.0.1/::1)
  • Phone numbers
  • Physical addresses, office locations
  • API keys, tokens, secrets, passwords (even if expired or fake-looking)
  • Internal URLs (intranet, VPN, internal tools, Jira, Confluence)
  • Employee IDs, badge numbers
  • Machine names, server hostnames (not generic like "localhost")
  • Database connection strings with server names
  • Git remote URLs containing usernames or internal domains
  • Screenshots or images that may contain PII (flag for manual review)
  • Session IDs, auth tokens, or cookies from real sessions
  • License keys or registration codes

IMPORTANT PATH PATTERNS to flag:

  • C:\Users[anyname]... -> BLOCKING (exposes Windows username)
  • /home/[anyname]/... -> BLOCKING (exposes Linux username)
  • /Users/[anyname]/... -> BLOCKING (exposes macOS username)
  • \[servername]... -> BLOCKING (exposes internal server name)

EXCEPTIONS (NOT PII - do not flag these):

  • Generic placeholder paths in code comments explaining patterns (e.g., "E.g., C:\Users\username...")
  • Paths using environment variables (e.g., %USERPROFILE%, $HOME, ~/)
  • Paths using AppContext.BaseDirectory, Path.GetTempPath(), Environment.GetFolderPath()
  • "localhost", "127.0.0.1", "::1", "0.0.0.0"
  • Example/placeholder values clearly marked as such (e.g., "user@example.com")
  • Open-source project names and maintainer names from public packages
  • Anthropic/Claude branding (this is a Claude Code tool - that's expected)

STEP 3.5: CenCon Documentation Check

Check if docs/cencon/architecture_manifest.yaml exists using the Glob tool.

If docs/cencon/architecture_manifest.yaml does NOT exist:

  • Set CENCON_STATUS = SKIPPED
  • Add SUGGESTION: "Consider adding CenCon documentation (docs/cencon/)"
  • Continue to STEP 3.6

If docs/cencon/architecture_manifest.yaml EXISTS:

  1. Read the manifest using the Read tool
  2. Extract the last_updated field (format: YYYY-MM-DD)
  3. Use Bash to find the most recently modified .cs file in src/: git log -1 --format="%ai" -- "src/**/*.cs"
  4. Documentation is STALE if:
    • Any .cs file was modified MORE RECENTLY than the manifest's last_updated date
    • OR manifest last_updated is more than 30 days old
  5. If STALE:
    • Add BLOCKING issue: "CenCon architecture_manifest.yaml is outdated"
    • Include: "Last manifest update: [date], Most recent code change: [date]"
    • Set CENCON_STATUS = FAIL
  6. If CURRENT:
    • Set CENCON_STATUS = PASS

STEP 3.6: Security Profile Drift Check

Check if docs/cencon/security_profile.yaml exists using the Glob tool.

If docs/cencon/security_profile.yaml does NOT exist:

  • Set SECURITY_DRIFT = SKIPPED
  • Continue to STEP 4

If docs/cencon/security_profile.yaml EXISTS:

  1. Read the profile using the Read tool
  2. Extract the last_verified field (format: YYYY-MM-DD)
  3. Calculate days since verification (use today's date)
  4. Extract drift.threshold_days (default: 30)
  5. If days since verification > threshold_days:
    • Add BLOCKING issue: "Security profile drift detected"
    • Include: "Last verified: [date], Days since: [N], Threshold: [threshold_days]"
    • Set SECURITY_DRIFT = FAIL
  6. If within threshold:
    • Set SECURITY_DRIFT = PASS

STEP 3.7: Documentation Coverage

Check if public documentation needs updating based on the changes being reviewed.

  1. Read docs/public/index.json using the Read tool to get the current documentation manifest
  2. Examine the changed files from STEP 1 to classify the change type:

IF the changes include NEW tools (new cc-* tool directories, new CLI executables):

  • Check if docs/public/tools/overview.md was updated to include the new tool
  • Check if docs/public/index.json references any new dedicated tool pages (if applicable)
  • If the new tool is NOT documented:
    • Add BLOCKING issue: "New tool [tool-name] added without documentation update"
    • Include: "Run /update-docs to generate documentation for the new tool"
    • Set DOCS_COVERAGE = FAIL

IF the changes include NEW features or NEW commands (new skills in .claude/skills/, new CLI subcommands, new major functionality):

  • Check if corresponding docs/public/ pages exist or were updated
  • If NOT documented:
    • Add BLOCKING issue: "New feature [feature-name] added without documentation"
    • Include: "Run /update-docs before committing"
    • Set DOCS_COVERAGE = FAIL

IF the changes are BUG FIXES or REFACTORS:

  • Check if the fix changes user-visible behavior (command syntax, output format, default values)
  • If behavior changed but docs not updated:
    • Add WARNING: "Bug fix changes user-visible behavior but docs not updated"
    • Set DOCS_COVERAGE = WARN
  • If internal-only change:
    • Set DOCS_COVERAGE = PASS

IF docs/public/ files were modified:

  • Verify docs/public/index.json is still valid:
    • Every "file" path in index.json must point to an actual file in docs/public/
    • No orphaned pages (files in docs/public/ without index.json entries, except index.json itself)
  • If invalid references found:
    • Add BLOCKING issue: "docs/public/index.json has broken file references"
    • Set DOCS_COVERAGE = FAIL

IF none of the above conditions apply (no tool/feature/behavior changes):

  • Set DOCS_COVERAGE = SKIPPED

STEP 4: Code style review

For each .cs, .xaml, and .xaml.cs file from Step 1:

  • Use the Read tool to read the full file
  • Compare against the rules from docs/CodingStyle.md
  • Record issues with FULL PATH and line number

Issue severities:

  • BLOCKING: Must fix. Causes review to FAIL.
  • WARNING: Should fix. Review still PASSES.
  • SUGGESTION: Nice to have. Review still PASSES.

STEP 5: Present findings

Use this exact format (plain text, no markdown tables):

Code Review Report

Files Reviewed: [count] Standards Applied: CodingStyle.md, PII Scan Result: PASS or FAIL

PII/PERSONAL INFORMATION Issues (BLOCKING - must fix before commit):

PII Type: [what kind of PII was found] Content: [the offending text, redacted if necessary] Fix: [how to fix it - use environment variables, generics, or remove]

BLOCKING Issues (must fix before commit):

Issue: [what is wrong] Fix: [how to fix it]

WARNING Issues (should fix):

Issue: [what is wrong]

SUGGESTIONS:

Issue: [what could be improved]

CRITICAL: Use FULL file paths like C:\repos\cc-director\src\CcDirector.Core\Session.cs:45 Never use just the filename.

If NO PII is found, include this line in the report: PII Scan: CLEAN - No personal information detected in changed files.

STEP 6: Return structured status

At the very end, include these lines exactly:

REVIEW_STATUS: PASS or FAIL BLOCKING_COUNT: [number] WARNING_COUNT: [number] SUGGESTION_COUNT: [number] PII_COUNT: [number] CENCON_STATUS: PASS, FAIL, or SKIPPED SECURITY_DRIFT: PASS, FAIL, or SKIPPED DOCS_COVERAGE: PASS, FAIL, WARN, or SKIPPED

FAIL if any of:

  • BLOCKING issues exist
  • PII issues exist
  • CENCON_STATUS is FAIL
  • SECURITY_DRIFT is FAIL
  • DOCS_COVERAGE is FAIL

PASS if none of the above conditions are true. SKIPPED and WARN status do NOT cause FAIL.

Common Issues from CodingStyle.md

BLOCKING:

  • Null-forgiving operator (!) to suppress warnings
  • Using .Result or .Wait() on async
  • Swallowing exceptions silently
  • Fallback programming patterns
  • Hard-coded credentials
  • Missing FileLog.Write in public methods
  • UI blocking operations (synchronous I/O on UI thread)
  • Using git add . or git add -A

WARNING:

  • Private fields without underscore prefix
  • Methods over 50 lines
  • async void methods (except event handlers)
  • IDisposable without disposal
  • Missing parameter validation at method start
  • Dispatcher.Invoke instead of Dispatcher.BeginInvoke

WPF-Specific Issues

BLOCKING:

  • ObservableCollection modified from background thread without Dispatcher
  • File I/O or network calls on UI thread without Task.Run

WARNING:

  • Missing INotifyPropertyChanged on ViewModels
  • UI elements without DataContext binding

Notes

Focus on changed code, not legacy issues. Be specific with line numbers. The commit skill depends on the REVIEW_STATUS line. PII scan applies to ALL file types, not just code files.


Skill Version: 4.0 Last Updated: 2026-03-01 Adapted from: internal review-code skill CenCon Integration: Added STEP 3.5 (Documentation Check) and STEP 3.6 (Security Drift Check) Docs Enforcement: Added STEP 3.7 (Documentation Coverage) - blocks on new tools/features without docs

Download now (ZIP)

  • Other versions66 projects use a version of this.

    Word for word · 1

    1. thefrederiksen/devthrottle★ 96100% same

    Edited · 0

    None found.

    Wrote their own version · 65

    1. penpot/penpot★ 62ksame name
    2. pnpm/pnpm★ 37ksame name
    3. verdaccio/verdaccio★ 18ksame name
    4. NVIDIA-NeMo/DataDesigner★ 2.4ksame name
    5. OpenAEV-Platform/openaev★ 1.8ksame name
    6. bazel-contrib/rules_python★ 687same name
    7. wataru-maeda/react-native-boilerplate★ 521same name
    8. ankitvgupta/exo★ 496same name
    9. ankitvgupta/mail-app★ 496same name
    10. ninehills/skills★ 280same name

    55 more not listed

    How matches are found. Word for word: the exact same text. Edited: shares passages with this file (“99% same” means 99% of its five-word phrases also appear here; 10% or more counts). Their own version: similar meaning, or, weakest, the same name. We can’t tell which project had it first. Projects are counted among the 200 most-starred candidates, and mentions are links to the repository we found, up to 50 per site, so both counts are a floor.

  • Used alongsideProjects with it also use clear-caches, electron-devtools-testing and 10 more.

    Other files people use alongside this one.

    Files found in the same public projects as a version of this one, more often than they turn up anywhere else. Each project counts once, large collections count for less, and this file's own repository is left out.
    • mrdulasolutionsSkill

      clear-caches

      Clear extension caches, analysis data, and drafts from the database. Use when testing sender lookups, analysis, or draft generation from a clean state.

      Also in 3 projects that use this

    • mrdulasolutionsSkill

      electron-devtools-testing

      Test the Electron app interactively using Chrome DevTools Protocol. Use when the user asks to test, verify, or interact with the running app via browser automation.

      Also in 3 projects that use this

    • ba0918Skill

      review-deps

      A focused read-only review that treats manifests, lockfiles, and dependency diffs as first-class input and evaluates known vulnerabilities and supply chain signals. Use when the user says "review the dependencies", "look at the dependency vulnerabilities", "check the lockfile", "supply chain risk", "organize the npm audit output", "detect typosquats", "dependency health", or "review-deps". Its subject is the health of the dependencies, not test quality or code quality.

      Also in 3 projects that use this

    • fabianbothSkill

      reviewloop

      Run the autonomous review loop to address PR comments, fix issues, and push changes iteratively until all comments are resolved.

      Also in 3 projects that use this

    • sarfraznawaz2005Skill

      take-screenshots

      A Windows screenshot skill that provides both programmatic full-screen capture and interactive region selection.

      Also in 3 projects that use this

    • PydanticSkill

      review-security

      Security review of the current branch against its merge base — sandbox escapes, memory errors, panics and resource-limit bypasses. Use when reviewing changes for security risk, or before merging anything touching the heap/ module, path_security.rs, the wire protocol or the pool.

      Also in 6 projects that use this

    • +1 more from mrdulasolutions
  • In this repository30 other files it gives its agents.

Does it work?

Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.

No reviews yet

People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.

  • It worked
  • Partly
  • It didn't
What did you use it for? e.g. Reviewing pull requests in a Rails app

Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.

Your trail

Files you open will collect here, so you can find them again.

Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.

Now do this for your own.

Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.