Skip to content
Back to skills

Census

ASecurity

Discover design decisions that exist in code but have no DR, and produce a DR promotion candidate list ranked by impact and reversibility. Pairs with adrift, which scans existing DRs for drift against code.

  • 12 stars
  • 0 votes
  • 0 copies
  • 0 views
  • Added September 24, 2026
ai-agentsgobashgit

Security analysis

A100/100

Pro scans all 8 files and shows the line behind each finding

Scanned September 24, 2026

npx -y skills add thkt/dotclaude --skill census --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Census?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Census
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/thkt-census-dotclaude/badge)](https://www.skillsdirectory.com/skills/thkt-census-dotclaude)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: census
description: Discover design decisions that exist in code but have no DR, and produce a DR promotion candidate list ranked by impact and reversibility. Pairs with adrift, which scans existing DRs for drift against code.
when_to_use: 判断未記録の発掘, undocumented decisions, DR候補発掘, ADR候補発掘, 設計判断棚卸し, decision archaeology, design rationale audit
allowed-tools: Read Write LS Bash(date:*) Bash(${CLAUDE_SKILL_DIR}/scripts/*) Bash(ugrep:*) Bash(git:*) Agent AskUserQuestion
model: opus
argument-hint: "[file or directory]"
---

# /census - DR gap audit

## Input

`$ARGUMENTS` is an optional path naming the audit scope. What gets collected is set by the Phase 1 table. When scoped to a path, record the target in the report Summary's Scope row.

## Criteria

Every criterion lives in ${CLAUDE_SKILL_DIR}/references/decision-criteria.md. That file holds impact / reversibility, the incomplete-contract definition, the DR-worth rule of thumb, and the challenge angles.

## Phase 1: Collect

List source by running ${CLAUDE_SKILL_DIR}/scripts/list-source-files.ts. Scan for docs using the file patterns in ${CLAUDE_SKILL_DIR}/references/detection-targets.md. When source exceeds the guideline of 20, confirm narrowing via AskUserQuestion before the Phase 2 reviewer fan-out. Options are a subdirectory, top-N, or a specific module. Where each stream looks is set by the table below.

| $ARGUMENTS  | source          | doc                   |
| ----------- | --------------- | --------------------- |
| none        | repository root | top-level and `docs/` |
| a directory | that path       | that subtree          |
| a file      | that file alone | nothing               |

## Phase 2: Mine

Record findings under the table columns in ${CLAUDE_SKILL_DIR}/templates/report-template.md, Source File Decisions for source and Prose Document Decisions for docs. Evidence is a comment, a name, a module-doc, or a commit, and a commit-derived one reads `commit <sha>`.

### Step 1: From source

Two streams feed this step, the code itself and the git history. Census runs `git log --follow --format='%h %s' -- <file>` over the history once and extracts commits containing decision verbs. The decision verb list is in ${CLAUDE_SKILL_DIR}/references/detection-targets.md. For the code, spawn the reviewer subagent matching each source file's language via Agent and have it answer the following.

- Why does this file have this granularity and shape
- Does it carry invariants or contracts unreadable from the code
- Is there a comment or module-doc recording the rationale
- Does it match the `incomplete-contract` pattern, where a comment states only the present state and omits the rule for future contributors

### Step 2: From docs

For each detected document, find sentences containing decision verbs; each match is a candidate.

## Phase 3: DR cross-reference

Cross-reference every Phase 2 candidate against the existing DRs. Drop the covered ones and record the excluded count in the Summary as "DR-covered (excluded)". The cross-reference runs when a DR directory exists; without one, every candidate moves on to Phase 4 unchanged.

## Phase 4: Judge

### Step 1: Tagging and initial ranking

Assign impact and reversibility to each candidate. Read the table top to bottom and take the first row that matches to decide whether it is promoted.

| Condition                                          | Treatment                            |
| -------------------------------------------------- | ------------------------------------ |
| `incomplete-contract=Yes`                          | Promote, whatever `documented?` says |
| `(impact = H) AND (reversibility = low OR medium)` | Promote                              |
| Anything else                                      | Record it, but do not promote        |

### Step 2: Devil's Advocate Challenge

1. Spawn `critic-design` via Agent with the initial promotion candidate list and ${CLAUDE_SKILL_DIR}/references/decision-criteria.md
2. Take the verdict (confirmed / weakened / needs_revision) and weaknesses the agent returns. Its own definition decides what comes back
3. Match those weaknesses against each candidate and assign keep / downgrade / drop from the table in the criteria file
4. Record the assignment alongside the initial ranking

## Phase 5: Emit the report

Write into `docs/audit/`, naming the file with the output of `date -u +%Y-%m-%d-%H%M%S` followed by `-dr-gaps.md`. UTC keeps same-day reruns from colliding.

1. Write it following ${CLAUDE_SKILL_DIR}/templates/report-template.md, substituting placeholders from findings
2. Put a single repo-wide summary line `keep N / downgrade N / drop N` right before the DR Promotion Candidates table
3. Print the candidate count and the DR promotion candidate count to the console

## Handoff

- File `keep` via `/dr`, or fold them into a single tracking issue via `/issue`
- List `downgrade` as comment-strengthening tasks
- Record `drop` in the report with nothing following
- The drift scan against existing DRs goes to `/adrift`. In a repository that already has DRs, run it first and use this skill for the gaps drift cannot reach
- Code changes and README updates are out of scope

## Completion condition

Finish only when all of the following hold. Record the reason in the report for any that cannot.

| Item        | Condition                                                           |
| ----------- | ------------------------------------------------------------------- |
| Report      | `docs/audit/<YYYY-MM-DD>-<HHMMSS>-dr-gaps.md` exists                |
| Source file | Every reviewed file is accounted for                                |
| Document    | Every scanned document has an extraction section                    |
| Evidence    | Every finding carries an Evidence entry                             |
| Tags        | Every candidate has impact + reversibility                          |
| Candidates  | DR promotion candidates listed at the end with a one-line rationale |

Files in this skill

  • SKILL.md5.9 KB
  • references/decision-criteria.md4.1 KB
  • references/detection-targets.md1.7 KB
  • scripts/list-source-files.ts3.7 KB
  • templates/report-template.md2.2 KB
  • tests/fixtures/list-source-files-cases.json1 KB
  • tests/list-source-files.test.ts7.2 KB
  • tests/verdict-and-paths.test.js5.5 KB

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…

Newsletter

Get the weekly list of safe new skills, and the ones we pulled.