skills/reclassification/SKILL.md
Critically evaluate and improve an existing classification system or taxonomy. Use when: reviewing how items are grouped (code modules, document categories, data labels, skill folders, config buckets, CSV/JSON columns, API enums), challenging whether current groupings still serve their purpose, merging overlapping categories, splitting overloaded ones, renaming for clarity, or redistributing items to better align with downstream use cases. Works on any classifiable data: code, markdown, structured data (CSV, JSON), taxonomies, hierarchical systems, or free-form lists.
npx skillsauth add michaelsvanbeek/personal-agent-skills reclassificationInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Critically evaluate an existing classification system and produce an improved version. Applies to any domain where items are grouped into categories: code modules, document folders, data labels, skill libraries, config buckets, or structured datasets.
Gather these before starting. Not all are required — work with what's available.
| Input | Required | Description | |-------|----------|-------------| | Items | Yes | The things being classified (files, rows, labels, skills, endpoints, etc.) | | Current classifications | Yes | How items are currently grouped (folder structure, labels, column values, tags) | | Downstream use cases | Recommended | Who consumes these classifications and for what purpose | | Min category size | Optional | Minimum number of items per category (default: 2) | | Max category size | Optional | Maximum number of items per category (default: no limit) | | Split threshold | Optional | When a category exceeds this size or has clear sub-clusters, consider splitting | | Merge threshold | Optional | When two categories have fewer than this many items each and overlap, consider merging | | Constraints | Optional | Fixed categories that cannot be renamed/removed, naming conventions, external dependencies |
List every item and its current classification. For large datasets, summarize with counts.
## Current Classification Inventory
| Category | Count | Sample Items |
|----------|-------|-------------|
| <category-1> | <n> | <item-a>, <item-b>, <item-c> |
| <category-2> | <n> | <item-d>, <item-e> |
| ... | ... | ... |
**Total items**: <N>
**Total categories**: <N>
**Uncategorized items**: <N or "none">
Before critiquing, understand the system:
Document this as:
## Classification Logic (Reconstructed)
**Organizing principle**: <e.g., "grouped by functional domain" | "no coherent principle — items added ad hoc">
**Original use case**: <e.g., "help users find the right skill by topic">
**Classifier**: <e.g., "single author, added incrementally over 6 months">
**Scope drift**: <e.g., "started with 10 items, now 35 — original structure may not scale">
**Coherence**: <high | medium | low | none — how consistently was the principle applied?>
If no coherent logic exists, note that explicitly. An accidental classification is the strongest signal that reclassification will add value.
For every category, answer these questions:
| Question | What you're checking | |----------|---------------------| | Is the name accurate? | Does the name describe what's actually inside? | | Is it internally coherent? | Do all items share a clear, common trait? | | Is it distinct from neighbors? | Could items be confused with another category? | | Is it right-sized? | Too few items (< min threshold) or too many (> split threshold)? | | Does it serve the downstream use case? | Would a consumer find what they need here? |
Quantitative signals — When working with structured data (CSV, JSON, database rows) or large item sets (50+), compute these before relying on qualitative judgment:
min_category_size or > split_threshold.Produce a diagnostic table:
## Category Evaluation
| Category | Accurate Name? | Coherent? | Distinct? | Size | Serves Use Case? | Issue |
|----------|---------------|-----------|-----------|------|-------------------|-------|
| <cat-1> | ✅ | ✅ | ⚠️ overlaps with <cat-3> | 12 | ✅ | Boundary issue |
| <cat-2> | ❌ name misleads | ✅ | ✅ | 3 | ⚠️ | Rename candidate |
| <cat-3> | ✅ | ❌ mixed concerns | ⚠️ | 18 | ❌ | Split candidate |
| ... | ... | ... | ... | ... | ... | ... |
Based on the evaluation, propose specific actions. Each action must have a rationale tied to a principle or downstream use case.
| Action | When to Apply | Template |
|--------|--------------|----------|
| Merge | Two categories overlap significantly or are both undersized | Merge <A> + <B> → <New Name> because <reason> |
| Split | A category contains distinct sub-clusters or exceeds the split threshold | Split <A> → <A1> + <A2> because <reason> |
| Rename | The name doesn't match the contents or is ambiguous to consumers | Rename <Old> → <New> because <reason> |
| Redistribute | Individual items are miscategorized | Move <item> from <A> to <B> because <reason> |
| Create | Orphaned items share a trait that deserves its own category | Create <New> for <item-1>, <item-2> because <reason> |
| Dissolve | A category adds no signal — its items fit better elsewhere | Dissolve <A>, redistribute items to <B>, <C> because <reason> |
| Keep | The category is well-formed and serves its purpose | Keep <A> as-is |
## Proposed Actions
| # | Action | Detail | Rationale |
|---|--------|--------|-----------|
| 1 | Merge | `planning` + `roadmap-planning` → `planning` | 80% content overlap; consumers can't distinguish them |
| 2 | Split | `comms` → `internal-comms` + `external-comms` | Distinct audiences with different voice rules |
| 3 | Rename | `general-coding` → `project-setup` | Contents are scaffolding conventions, not general coding |
| 4 | Keep | `security` | Well-scoped, distinct, right-sized |
Present the full reclassified structure side by side with the original.
## Proposed Classification
| New Category | Items | Source (Original Category) |
|-------------|-------|---------------------------|
| <new-cat-1> | <item-a>, <item-b> | was <old-cat-1> |
| <new-cat-2> | <item-c>, <item-d>, <item-e> | split from <old-cat-3> |
| ... | ... | ... |
**Total items**: <N> (should match original)
**Total categories**: <N> (was <old N>)
Run these checks before finalizing:
| Check | Pass? | |-------|-------| | Every item from the original inventory appears exactly once | | | No category is below the minimum size threshold | | | No category is above the maximum size threshold (if set) | | | Every category name is unambiguous to the downstream consumer | | | The taxonomy is stable — a plausible new item would fit without restructuring | | | The number of actions is proportional to the problems found (don't over-reorganize) | |
Reclassification is rarely one-pass. Before finalizing:
If the reclassification will be implemented (not just theoretical), outline the steps:
## Migration Path
1. <action — e.g., "Rename `general-coding/` to `project-setup/`">
2. <action — e.g., "Move items X, Y from `comms/` to new `external-comms/`">
3. <action — e.g., "Update references in README.md and any index files">
4. <action — e.g., "Delete empty `old-category/` directory">
**Breaking changes**: <list any downstream references, configs, or integrations that will break>
**Rollback**: <how to revert if the new classification causes problems>
Every reclassification analysis should produce these sections:
These defaults can be overridden by the user:
| Parameter | Default | Effect |
|-----------|---------|--------|
| min_category_size | 2 | Categories below this trigger a merge review |
| max_category_size | none | Categories above this trigger a split review |
| split_threshold | 15 | Suggest splitting when a category exceeds this count |
| merge_threshold | 3 | Suggest merging when two related categories are each below this count |
| rename_confidence | high | Only rename when the mismatch between name and contents is clear |
| preserve_list | [] | Category names that must not be changed (external dependencies) |
Not every classification needs to be flat. Consider hierarchy when:
| Signal | Recommendation | |--------|---------------| | < 20 categories, each well-sized | Stay flat — hierarchy adds navigation cost for little benefit | | > 20 categories with natural parent groups | Add one level — group related categories under parents | | Items have a clear primary axis + secondary axis | Use hierarchy for primary, tags for secondary | | Consumers navigate top-down (browse) | Hierarchy helps | | Consumers search or filter (query) | Flat + tags is often better |
Never go deeper than two levels. If you need three, the top level is too granular.
When reclassifying a column in a dataset rather than a folder structure:
SELECT category, COUNT(*) FROM data GROUP BY category ORDER BY COUNT(*) DESCold_value → new_valueUPDATE or Python/pandas transformation, not just the conceptual mapping## Value Mapping
| Old Value | New Value | Count | Rationale |
|-----------|-----------|-------|-----------|
| "bug" | "defect" | 142 | Align with established terminology |
| "enhancement" | "feature" | 89 | Merge: distinction wasn't meaningful for reporting |
| "task" | "task" | 204 | Keep as-is |
| "question" | → dissolve | 12 | Redistribute: 8 are actually bugs, 4 are feature requests |
| Anti-Pattern | Why It Fails | |-------------|-------------| | Reclassify everything | Massive reorganizations break references and confuse users. Change only what's broken. | | Classify by implementation | Grouping by technology instead of user need creates categories that don't help consumers. | | One item per category | Hyper-granular taxonomies add navigation cost without adding signal. | | Catch-all categories | "Other" or "Misc" categories are where items go to die. If items don't fit, the taxonomy has gaps. | | Rename without redirects | Renaming breaks links, configs, and muscle memory. Always provide a migration path. | | Optimize for the author | The author's mental model is not the consumer's. Classify for retrieval, not for filing. | | Skip the inventory | Proposing changes without counting what exists leads to misjudged merges and splits. |
development
TypeScript coding standards and type safety conventions. Use when: creating TypeScript files, defining interfaces and types, writing type-safe code, reviewing TypeScript for type correctness, auditing a codebase for type safety gaps, eliminating any or ts-ignore usage, or improving strict-mode compliance. Covers strict typing, avoiding any and ts-ignore, discriminated unions, Zod runtime validation, immutability patterns, and proper type definitions.
testing
Writing clear, actionable tickets in any issue tracker (Jira, Linear, GitHub Issues, ServiceNow, etc.). Use when: creating epics, stories, tasks, bugs, or spikes; writing acceptance criteria; decomposing work for a sprint; linking dependencies between tickets; auditing backlog items for clarity; or coaching a team on ticket quality. Covers title conventions, description templates, acceptance criteria, decomposition rules, dependency linking, and org-specific pluggable configuration.
development
Testing strategy, patterns, and evaluation for software and LLM/AI systems. Use when: writing tests, choosing test boundaries, designing test data, structuring test suites, evaluating LLM outputs, building evaluation pipelines, setting coverage thresholds, auditing test coverage gaps in existing projects, or improving test quality and structure.
development
Writing effective status updates for different audiences and cadences. Use when: writing a weekly status update, preparing a monthly summary, drafting a quarterly review, sending updates to leadership, sharing progress with stakeholders, or improving the clarity and impact of team communications. Covers weekly, monthly, and quarterly formats tailored for upward, lateral, and downward communication.