本文へ移動
cccskills
無料GitHub で公開

tech-debt-scan

At the end of a feature or fix, scan docs/architecture/tech-debt.md for entries whose area matches the files this branch touched. Surfaces each candidate for a call (resolved removes the entry, still applies keeps it, defer further narrows it) and asks about new debt the PR defers. Walks the user through each, applies the diffs, and re-runs npm run lint:docs to confirm anchor references still resolve. AGENTS.md's followup-discipline rule routes internal debt with a slug and severity here; /pr runs it as a sub-agent. Use before opening a PR for any non-trivial change.

日本語の概要は準備中です。原文の説明を表示しています。

jellyrock/jellyrockスター 46(GitHub 46 + cccskills 0)

実行スコア 未検証

インストール方法を見る

含まれるファイル(1)

  • SKILL.md5.4 KB

SKILL.md(原文)

インストールする前に、エージェントに与えられる指示の中身を確認できます。

/tech-debt-scan: a debt sweep before a PR

docs/architecture/tech-debt.md is the inventory of known debt. AGENTS.md's followup-discipline rule sends internal debt with a slug and a severity here: work a PR defers and mentions only in its body is forgotten once it merges. This skill gives every PR a deliberate sweep, in two halves:

  1. Did this PR resolve an existing entry? Then remove it in the same PR. The closed issue and the file's git history are the record.
  2. Did this PR defer new debt? Then add an entry with a stable slug.

Step 1: Identify the changed files

# Files changed on this branch. Use origin/main: local main is often stale.
git diff origin/main...HEAD --name-only

# Uncommitted and untracked files, when scanning before committing
git diff HEAD --name-only
git ls-files --others --exclude-standard

Combine the two. This is the territory the PR touched.

Step 2: Scan tech-debt.md for area matches

Entries sit under ### High, ### Medium and ### Low, each headed by its slug in backticks:

#### `slug-name`

- **area**: the files or symbols it covers
- **issue**: what is wrong
- **direction**: what the fix looks like

Every entry has area and issue; most have direction. Some add a - **severity**: bullet (why it has that grade), a - **github**: bullet (its issue number) or a bullet of their own (enforced, headroom). List the entries with:

grep -nE "^#### " docs/architecture/tech-debt.md

For each entry, check whether a changed file's full path appears in its body, or whether its area covers that file's folder. Match on the full path: a bare file name such as CLAUDE.md matches entries about other folders' files. Match generously: a borderline candidate the user dismisses costs less than a missed one. The user makes the call, not the matching.

Step 3: Ask the user about each candidate

Present each match like this:

**[`<slug>`](docs/architecture/tech-debt.md#<slug>)** (<High, Medium or Low>)

> <the first sentence or two of the entry's issue bullet>

Files this PR touched that overlap: <list>

What's the call? `resolved` / `still applies` / `defer further` / `skip`
  • resolved: this PR fixed it. Remove the entry. If its github field names an issue, the user comments on it ("closed by #N") and closes it.
  • still applies: this PR didn't touch that part; the entry stays.
  • defer further: the PR fixes part of it. Rewrite the entry to say what is left.
  • skip: a false positive.

Walk them one at a time; don't batch.

Step 4: Ask about new debt

Separately from Step 3, ask: "Did this PR defer any work? Anything marked out of scope, TODO, follow-up or will fix later?"

For each, draft an entry in the file's schema:

#### `<stable-kebab-slug>`

- **area**: <files or symbols>
- **issue**: <what is wrong and what was deferred, in two to four sentences>
- **direction**: <what the fix would look like; leave the bullet out if nobody knows yet>

Put it under the ### High, ### Medium or ### Low heading the file's severity rubric gives. Keep the issue bullet first after area: scripts/catchup-state.js reads the slug, the section and the first issue bullet to brief /catchup. The slug must be unique and stable, since commits, PRs and decisions cite it.

Step 5: Apply the diff and verify

Apply the removals and additions with Edit. Then check the anchors:

npm run lint:docs

It fails on a tech-debt.md#<slug> link whose entry you removed. Fix it by the file it is in:

  • An architecture or dev doc: update the link or drop it.
  • A journal (docs/decisions.md, docs/progress.md) or an ADR: neither can be hand-edited (journals change through /log and /done; ADRs never change). Stop and ask the user how to keep the link working.

Step 6: Link new entries from the PR

When /pr opens the PR, its Follow-ups section links each new slug. A relative link does not resolve from a PR body, so use the full URL:

## Follow-ups
- [`itemdetails-size`](https://github.com/jellyrock/jellyrock/blob/main/docs/architecture/tech-debt.md#itemdetails-size): split the per-type renderers into modules

When not to use

  • A trivial change (a typo fix, a dependency bump): no scan needed.
  • You're not opening a PR: mid-feature, the slugs aren't stable yet.
  • The PR exists to resolve an existing slug: remove the entry in it (Step 3's resolved). Scan only if the work found new debt.

Sub-agent invocation

To run it from a sub-agent, the parent passes Read .claude/skills/tech-debt-scan/SKILL.md and follow the steps; surface candidate slugs and ask about new debt but do not apply edits in the Agent prompt. The sub-agent this section starts never applies tech-debt edits: those are the user's calls.

レビュー

まだレビューはありません。使ってみた感想をお寄せください。

コメント

ログインなしで書き込めます。使ってみた感想、質問、動かなかった環境などを気軽にどうぞ。

まだコメントはありません。最初のコメントを書いてみませんか。

送信するとすぐに公開されます。メールアドレスや電話番号などの個人情報は書かないでください。URL は 2 つまでです。

0 / 1000 文字

このフォームは reCAPTCHA で保護されており、Google のプライバシーポリシーと利用規約が適用されます。

同じリポジトリのスキル

catchup

無料

Session-start briefing: where did I leave off, what is in flight, what needs attention. One tested script reads git, the journal (followups, running work, cadences) and tracked projects and prints every fixed-threshold check that fires; JellyRock's own aggregator adds open PRs, high-engagement bugs, recent bug reports, current-branch CI, pending handoffs, open upstream-watch issues (Jellyfin releases and release candidates, Roku OS), recent ADRs, tech debt and architecture-doc staleness. Ends with one Suggested next move that hands off to /log, /done, /issue-triage, /runtime-triage, /ci-triage or /server-upgrade. Mandated by AGENTS.md's catchup-discipline rule: run at the start of any genuine new session, after a multi-day gap, or whenever you ask what the state of the world is.

日本語の概要は準備中です。原文の説明を表示しています。

jellyrock/jellyrock462026年10月26日 更新

ci-triage

無料

Diagnose a failed CI workflow run and fix it the /snag way. A tested read-only script fetches the run, reports every failed job and step with the log region around its errors (not the post-job cleanup), and classifies each against this repo's gates.tsv, printing the banner a gate carries when its obvious fix is the wrong one. Then: re-run only what is transient, reproduce locally, find the root cause, and show one decision screen; the chosen fix is built test-first and committed on a fix branch, never pushed. Use when a CI run failed on a pull request or on the default branch.

日本語の概要は準備中です。原文の説明を表示しています。

jellyrock/jellyrock462026年10月26日 更新

DEPRECATED, replaced by the `enrich` phase built into /crash-report. The old flow filed crash issues first and enriched them one by one afterward. The new flow (stage, then enrich, then file) pulls the dashboard backtrace before filing, so issues are born complete and architectural-class crashes go to their epic instead of becoming standalone issues. Do not invoke it for new work: run /crash-report and paste the backtraces during its enrich step. It stays only as a redirect; the `enrich-issue` script subcommand still exists as a legacy escape hatch for a crash issue filed before the change.

日本語の概要は準備中です。原文の説明を表示しています。

jellyrock/jellyrock462026年10月26日 更新

Process a Roku weekly crash-report CSV (or a zip holding one or more CSVs) into tracked GitHub issues and architectural-epic evidence, enriching before filing (stage, then enrich, then file). STAGE parses and filters the CSV, groups by pkg-path signature, builds each cited app version in a temporary git worktree, maps the transpiled `.brs` line back to the source `.bs` line, runs the GitHub dedup search, and writes a local worksheet where every crash starts pending; a mechanism hint (task-launch, network, other) orders which to pull first but never authorizes a file. ENRICH folds in the per-crash backtraces you paste from Roku's dashboard (a 7-day window, one click per crash, no bulk export), extracts each `&hNN` exception code, and routes every crash to a disposition (nothing files or aggregates without a backtrace): `file` (a scoped bug becomes a new per-signature [crash] issue, born enriched), `aggregate` (a known architectural class: `&h29` big-library too-many-task-threads, `&h23` render-thread execution timeouts, the `&hec` init `m.global.constants` race; upserted as one flat record comment per `file·function·line·version` onto the class epic, never a standalone issue), or `watch` (accepted noise, a spike comment only). FILE performs the GitHub writes (create, comment or reopen for scoped bugs; the epic record upsert for architectural classes) and writes a run-summary handoff. Dedup-aware and idempotent. Use when a fresh Roku crash CSV arrives (weekly). A deep dive on one crash goes to `/issue-triage <N>` after filing.

日本語の概要は準備中です。原文の説明を表示しています。

jellyrock/jellyrock462026年10月26日 更新

Draft a GitHub issue body for the JellyRock repo from a Reddit/Discord post or free-form bug report and submit it via forge.sh. Reads the YAML form templates under .github/ISSUE_TEMPLATE/ to know which fields are required, fills them by extracting from the input, asks for any missing required fields, validates the body matches the chosen template's schema, then runs forge.sh issue create with the auto-labels the template defines. Use when you have a user report (paste from anywhere) and want to formalize it into a properly-structured GitHub issue.

日本語の概要は準備中です。原文の説明を表示しています。

jellyrock/jellyrock462026年10月26日 更新

dep-major

無料

Walk a major dependency-version bump (a Renovate major PR, possibly a grouped one carrying several deps, or a package you name) through JellyRock's major-bump SOP so the judgment steps run the same way every time. Resolves each package and its from and to versions, fetches the upstream changelog/migration guide for that range, classifies the breaking changes, greps the codebase for the call sites those breaks actually hit, runs the mechanical gate that fits the dependency's type (a runtime BrightScript lib: validate, build, lint:bs, then test:unit and test:rta on a device; JS or Node tooling: test:scripts, then run the affected script; GitHub Actions: the PR's own CI plus a trace of the conditional paths CI doesn't exercise), and returns a go/no-go with any required migration surfaced (and applied on request). Majors never automerge (the org Renovate config), so this is the human-review path. Use when a Renovate major PR appears, or before bumping a dependency's major version by hand. Not for patch or minor bumps (those automerge after a soak) or for Jellyfin server releases (use /server-upgrade).

日本語の概要は準備中です。原文の説明を表示しています。

jellyrock/jellyrock462026年10月26日 更新

jellyrock のスキルをすべて見る

このスキルの問題を報告する