Tech Debt Audit
This is a Hermes-native tech-debt-audit workflow skill.
Why This Exists
tech-debt-audit exists so accumulated debt becomes a ranked, reconcilable ledger instead of a one-off complaint: findings cite file:line, severity and effort make the trade-off explicit, quick wins are separated from big fixes, and reruns mark what was resolved instead of rediscovering it.
Do Not Use When
- The target is one diff, PR, or claim rather than the codebase's accumulated state; use
code-review.
- The user wants the debt removed now, behavior preserved; use
ai-slop-cleaner for deletion-first cleanup.
- A boundary-changing fix from the ledger needs its execution shaped into phases; use
refactor-plan.
- The question is release risk for a specific deploy rather than source quality; use
production-audit.
Examples
Good example:
- Prompt: Audit our tech debt and tell me what to fix first - we have maybe two weeks of cleanup budget.
- Expected behavior: Orientation from manifests and churn, dimension-by-dimension findings with file:line citations, the severity-by-effort ledger with top fixes and quick wins sized to the budget, and the looks-bad-but-fine list.
- Why: A budgeted what-to-fix-first question is exactly the ranked ledger this workflow produces.
Bad example:
- Prompt: This module is a mess, rewrite it properly.
- Expected behavior: Refuse the rewrite framing: audit the module into ledger findings with bounded fixes, or route a decided restructure to
refactor-plan.
- Why: A rewrite recommendation is the failure mode the ledger exists to replace with bounded, ranked fixes.
Completion Checklist
- Orientation evidence is observed: manifests, churn ranking, and largest files are named, not assumed.
- Every finding has id, dimension, file:line, severity, effort, and a bounded recommendation.
- Quick wins and top fixes are ranked, and the looks-bad-but-is-actually-fine section is present.
- On rerun, every prior finding is reconciled RESOLVED, CARRIED, or superseded - none silently dropped.
Recovery Notes
- If the stack is unrecognized, orient from the manifests first and say which dimensions lack detection commands rather than guessing.
- If a finding cannot be cited to file:line, demote it to an open question and keep it out of the ranked table.
- If the previous ledger's ids no longer match the tree, map them by dimension plus path before declaring anything RESOLVED.
Workflow Lane
- Current lane: Coding handoff (
idea-to-deploy, llm-app-dev, cto-loop, deploy-and-monitor, code-review, build-failure-triage, verification-gate, security-safety-review, +13 more) - coding owners, handoffs, review, CI, and merge evidence.
- If intent belongs to another lane, hand back to
oh-my-hermes or name the adjacent workflow.
- Shared product, routing, compatibility, and evidence rules:
omh-routing/references/skill-common-rail.md.
Use When
Use when the codebase's accumulated debt should be measured and ranked as a ledger - findings with file:line, severity, and effort, quick wins separated from big fixes - rather than judged as a diff or cleaned up on the spot.
Strong routing signals: `tech-debt-audit`, `tech debt`, `tech debt audit`, `technical debt`, `technical debt audit`, `tech debt ledger`, `debt ledger`, `audit our tech debt`, `tech debt report`, `code debt audit`, `where is our tech debt`, `기술부채`, `기술 부채`, `기술부채 감사`, `기술부채 감사해줘`, `기술부채 점검`, `기술부채 장부`, `부채 원장`
Catalog Metadata
Category: maintenance
Phase: tech-debt-audit
Hermes role: reviewer
Quality tier: finding-evidence-gated
Reasoning demand: heavy
Quality bar:
- Orient before auditing: read the manifests, rank churn from the git log, and name the largest and most-changed files - observed evidence, never memory of the tree.
- Audit dimension by dimension from the named list - architectural decay, consistency rot, type and contract gaps, test debt, dependency and configuration debt, performance and resource debt, error-handling and observability debt, security hygiene, documentation drift; the full contract is
omh-tech-debt-audit/references/debt-dimensions.md.
- Every finding row carries a stable id, its dimension, a file:line citation, a severity, an effort class (S/M/L), and a bounded recommendation - never a rewrite.
- Close with the mandatory looks-bad-but-is-actually-fine section: deliberate patterns that pattern-match to debt stay off the ledger, with the reason recorded.
- On rerun, reconcile against the previous ledger before writing a new one: every prior finding is marked RESOLVED with the evidence gone, CARRIED with its age, or superseded by a NEW finding - a rerun that restarts from zero loses the ledger's point.
Handoff policy:
Hermes owns the orientation, the dimension audit, and the ledger; detection commands run through the operator's terminal and stay prepared_not_observed until their output is seen, and every fix the ledger recommends is coding work for the selected executor lane, never part of the audit.
Required inputs:
- the repo root or the scoped path list the audit is confined to
- the stack truth from manifests (package/build files), not from memory of the tree
- the previous ledger when one exists, so the rerun can reconcile instead of restart
Expected outputs:
- orientation summary: manifests read, churn ranking, largest files, test and CI entry points
- findings table per
tech_debt_ledger/v1: id, category, file:line, severity, effort, recommendation
- top fixes ranked by severity and the quick wins ranked by payoff-per-effort
- the looks-bad-but-is-actually-fine list, and the RESOLVED/NEW/CARRIED reconciliation on rerun
Artifact expectations:
- debt ledger per
omh-tech-debt-audit/references/debt-dimensions.md
- prepared detection commands named per stack, marked observed only after their output is seen
Safety rules:
- Never recommend a rewrite; the ledger names bounded fixes or it names nothing.
- A finding without a file:line citation is an open question, not a finding.
- Detection commands are prepared context until their exit status and output are observed.
- A scoped path list is a boundary: out-of-scope findings are reported as out of scope, never audited silently.
Runtime Evidence
Preferred harness for this skill: coding-handling.
omh runtime record --skill tech-debt-audit --harness coding-handling --status started
Record observed delegation results; otherwise return not_available or not_observed.
Prepared OMH routing is not execution, review, CI, merge-readiness, or merge evidence.
- Treat wrapper memory/context summaries as advisory local context, not proof of opaque Hermes memory reads or changes.
Preserve workflow intent and stop conditions; verify before claiming completion.
Use Hermes-native subagent/delegation features when available: native subagents -> Hermes delegation when available, otherwise sequential lanes.
Shared product, compatibility, topology, memory, harness, and execution rules: omh-routing/references/skill-common-rail.md. Load it when applicable; otherwise name an unavailable capability.
1---
2name: "omh-tech-debt-audit"
3description: "[omh] Hermes Tech Debt Audit workflow: build the severity-by-effort debt ledger from observed repo evidence - orient, audit the named dimensions with file:line citations, rank fixes and quick wins - and reconcile RESOLVED/NEW/CARRIED against the previous ledger on rerun. Use when the user says: tech-debt-audit, tech debt, tech debt audit, technical debt, technical debt audit, tech debt ledger, debt ledger, audit our tech debt."
4metadata:
5 hermes:
6 tags: [workflow, oh-my-hermes, maintenance]
7 category: maintenance
8 phase: tech-debt-audit
9 role: reviewer
10 quality_tier: finding-evidence-gated
11---
12
13# Tech Debt Audit
14
15This is a Hermes-native `tech-debt-audit` workflow skill.
16
17## Why This Exists
18
19`tech-debt-audit` exists so accumulated debt becomes a ranked, reconcilable ledger instead of a one-off complaint: findings cite file:line, severity and effort make the trade-off explicit, quick wins are separated from big fixes, and reruns mark what was resolved instead of rediscovering it.
20
21## Do Not Use When
22
23- The target is one diff, PR, or claim rather than the codebase's accumulated state; use `code-review`.
24- The user wants the debt removed now, behavior preserved; use `ai-slop-cleaner` for deletion-first cleanup.
25- A boundary-changing fix from the ledger needs its execution shaped into phases; use `refactor-plan`.
26- The question is release risk for a specific deploy rather than source quality; use `production-audit`.
27
28## Examples
29
30Good example:
31
32- Prompt: Audit our tech debt and tell me what to fix first - we have maybe two weeks of cleanup budget.
33- Expected behavior: Orientation from manifests and churn, dimension-by-dimension findings with file:line citations, the severity-by-effort ledger with top fixes and quick wins sized to the budget, and the looks-bad-but-fine list.
34- Why: A budgeted what-to-fix-first question is exactly the ranked ledger this workflow produces.
35
36Bad example:
37
38- Prompt: This module is a mess, rewrite it properly.
39- Expected behavior: Refuse the rewrite framing: audit the module into ledger findings with bounded fixes, or route a decided restructure to `refactor-plan`.
40- Why: A rewrite recommendation is the failure mode the ledger exists to replace with bounded, ranked fixes.
41
42## Completion Checklist
43
44- Orientation evidence is observed: manifests, churn ranking, and largest files are named, not assumed.
45- Every finding has id, dimension, file:line, severity, effort, and a bounded recommendation.
46- Quick wins and top fixes are ranked, and the looks-bad-but-is-actually-fine section is present.
47- On rerun, every prior finding is reconciled RESOLVED, CARRIED, or superseded - none silently dropped.
48
49## Recovery Notes
50
51- If the stack is unrecognized, orient from the manifests first and say which dimensions lack detection commands rather than guessing.
52- If a finding cannot be cited to file:line, demote it to an open question and keep it out of the ranked table.
53- If the previous ledger's ids no longer match the tree, map them by dimension plus path before declaring anything RESOLVED.
54
55## Workflow Lane
56
57- Current lane: **Coding handoff** (`idea-to-deploy`, `llm-app-dev`, `cto-loop`, `deploy-and-monitor`, `code-review`, `build-failure-triage`, `verification-gate`, `security-safety-review`, `+13 more`) - coding owners, handoffs, review, CI, and merge evidence.
58- If intent belongs to another lane, hand back to `oh-my-hermes` or name the adjacent workflow.
59- Shared product, routing, compatibility, and evidence rules: `omh-routing/references/skill-common-rail.md`.
60
61## Use When
62
63Use when the codebase's accumulated debt should be measured and ranked as a ledger - findings with file:line, severity, and effort, quick wins separated from big fixes - rather than judged as a diff or cleaned up on the spot.
64
65 Strong routing signals: `tech-debt-audit`, `tech debt`, `tech debt audit`, `technical debt`, `technical debt audit`, `tech debt ledger`, `debt ledger`, `audit our tech debt`, `tech debt report`, `code debt audit`, `where is our tech debt`, `기술부채`, `기술 부채`, `기술부채 감사`, `기술부채 감사해줘`, `기술부채 점검`, `기술부채 장부`, `부채 원장`
66
67## Catalog Metadata
68
69Category: `maintenance`
70Phase: `tech-debt-audit`
71Hermes role: `reviewer`
72Quality tier: `finding-evidence-gated`
73Reasoning demand: `heavy`
74
75Quality bar:
76
77- Orient before auditing: read the manifests, rank churn from the git log, and name the largest and most-changed files - observed evidence, never memory of the tree.
78- Audit dimension by dimension from the named list - architectural decay, consistency rot, type and contract gaps, test debt, dependency and configuration debt, performance and resource debt, error-handling and observability debt, security hygiene, documentation drift; the full contract is `omh-tech-debt-audit/references/debt-dimensions.md`.
79- Every finding row carries a stable id, its dimension, a file:line citation, a severity, an effort class (S/M/L), and a bounded recommendation - never a rewrite.
80- Close with the mandatory looks-bad-but-is-actually-fine section: deliberate patterns that pattern-match to debt stay off the ledger, with the reason recorded.
81- On rerun, reconcile against the previous ledger before writing a new one: every prior finding is marked RESOLVED with the evidence gone, CARRIED with its age, or superseded by a NEW finding - a rerun that restarts from zero loses the ledger's point.
82
83Handoff policy:
84
85Hermes owns the orientation, the dimension audit, and the ledger; detection commands run through the operator's terminal and stay prepared_not_observed until their output is seen, and every fix the ledger recommends is coding work for the selected executor lane, never part of the audit.
86
87Required inputs:
88
89- the repo root or the scoped path list the audit is confined to
90- the stack truth from manifests (package/build files), not from memory of the tree
91- the previous ledger when one exists, so the rerun can reconcile instead of restart
92
93Expected outputs:
94
95- orientation summary: manifests read, churn ranking, largest files, test and CI entry points
96- findings table per `tech_debt_ledger/v1`: id, category, file:line, severity, effort, recommendation
97- top fixes ranked by severity and the quick wins ranked by payoff-per-effort
98- the looks-bad-but-is-actually-fine list, and the RESOLVED/NEW/CARRIED reconciliation on rerun
99
100Artifact expectations:
101
102- debt ledger per `omh-tech-debt-audit/references/debt-dimensions.md`
103- prepared detection commands named per stack, marked observed only after their output is seen
104
105Safety rules:
106
107- Never recommend a rewrite; the ledger names bounded fixes or it names nothing.
108- A finding without a file:line citation is an open question, not a finding.
109- Detection commands are prepared context until their exit status and output are observed.
110- A scoped path list is a boundary: out-of-scope findings are reported as out of scope, never audited silently.
111
112## Runtime Evidence
113
114Preferred harness for this skill: `coding-handling`.
115
116```sh
117omh runtime record --skill tech-debt-audit --harness coding-handling --status started
118```
119
120Record observed delegation results; otherwise return `not_available` or `not_observed`.
121Prepared OMH routing is not execution, review, CI, merge-readiness, or merge evidence.
122- Treat wrapper memory/context summaries as advisory local context, not proof of opaque Hermes memory reads or changes.
123Preserve workflow intent and stop conditions; verify before claiming completion.
124
125Use Hermes-native subagent/delegation features when available: native subagents -> Hermes delegation when available, otherwise sequential lanes.
126
127Shared product, compatibility, topology, memory, harness, and execution rules: `omh-routing/references/skill-common-rail.md`. Load it when applicable; otherwise name an unavailable capability.