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

routine-abstraction-police

Autonomous maintenance routine that finds imports crossing a stated architectural boundary the wrong way — cross-package imports, dashboard features reaching into each other, backend-v2 transport adapters touching models, mobile routes bypassing screens — and fixes each violation by moving code or inverting the dependency, shipping via /ship. Use only when the user explicitly invokes /routine-abstraction-police or asks to fix layering violations. Only rules stated in a AGENTS.md count; SKIP for too-many-layers (routine-abstraction-improver) and duplicated logic (routine-dup-unifier). The core trigger is "this import points the wrong way across a stated boundary".

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

bex-co/beancount-ioスター 315(GitHub 315 + cccskills 0)

実行スコア 未検証

インストール方法を見る

含まれるファイル(1)

  • SKILL.md4.1 KB

SKILL.md(原文)

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

Task: Fix imports that cross a stated boundary the wrong way

Usage: /routine-abstraction-police [package-or-path]

Find an import that violates a boundary this repo has written down, fix it by moving code to the right layer or inverting the dependency, and ship via /ship.

Contract

Read .agents/skills/routine-shared/contract.md first — preconditions, scope resolution, verify gates, ship protocol, budget, universal STOPs. Floor even without it: never ship red; one finding per ship; anything in a DO_NOT_DO.md is a hard STOP.

The one proof rule

A violation exists only against a rule stated in a AGENTS.md (root or scoped) or an ADR. Your own taste in layering is not a rule. Before fixing, quote the rule; re-read the scoped AGENTS.md of the target package for rules beyond the seed list below. No stated rule → no finding.

Workflow

1. Scope

Resolve scope per the contract.

2. Discover — the stated rules and their greps

  • Repo-wide (root AGENTS.md): no cross-package imports — grep for relative imports escaping the package root and cross-package path aliases.
  • dashboard (dashboard/AGENTS.md): one feature must not import another feature's private component/utility (cross-feature infrastructure belongs in src/common/); route files under src/routes/ stay thin and import the feature page — grep src/features/* for imports from sibling features.
  • backend-v2 (backend-cluster/backend-v2/AGENTS.md, Dependency and layer rules): resolvers/REST handlers delegate — they do not access models or orchestrate several services; workflows must not import GraphQL DTOs from api/; services stay transport-agnostic; models hold persistence only.
  • mobile (mobile/AGENTS.md): app/ route files mount screens from src/screens/ — screen logic does not live in app/; src/generated-graphql/ is codegen output nothing hand-edits.

3. Prove it

Read the violating import in context and quote the stated rule it breaks. Confirm the violation is real usage, not a type-only import a rule permits.

4. Fix

Pick the smallest correct repair:

  1. Move the code to the layer both sides may depend on (src/common/, a service, src/shared/).
  2. Invert the dependency — pass the value/callback in as a parameter or prop instead of importing downward.
  3. Duplicate a tiny helper (≤10 lines, with a comment naming the twin) when sharing would demand a worse structure — explicitly not a routine-dup-unifier finding at that size.

For a cross-package violation, the fix lives entirely on the violating side (duplicate or restructure locally); touching the other package is a separate concern and usually a universal STOP.

5. Verify

Full owning-package gate, plus re-grep to show the violating pattern is gone and no new one was introduced.

6. Ship

Compose /ship for this one violation. Loop within budget.

What NOT to do

  • Never invent a boundary. If the structure feels wrong but no rule says so, propose the rule in the summary — don't enforce it.
  • Don't remove layers (routine-abstraction-improver) or unify duplicates (routine-dup-unifier).
  • Never "fix" a violation by weakening the rule's AGENTS.md wording.
  • Never hand-edit codegen output to satisfy a boundary — regenerate or restructure the source instead.

Arguments

$ARGUMENTS

レビュー

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

コメント

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

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

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

0 / 1000 文字

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

同じリポジトリのスキル

Prepare supported accrual and reversal drafts for a period from an explicitly stated schedule — basis, service interval, day-count, recognized-to-date, already-booked, required adjustment — posted only through the suite's propose/confirm/check flow with stable schedule identity. Skip recording one-off entries the user describes (beancount-add), explaining how a balance moved (beancount-roll-forward), tax or depreciation advice, automatic reversals, and ledgers hosted on Beancount.io.

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

bex-co/beancount-io3152026年10月26日 更新

Record one-off entries the user describes in a local Beancount ledger through bea — a purchase, bill, paycheck, or transfer between their own accounts (including splits and pasted receipt text), opening or closing an account, a price, or a note. Propose the exact entries from existing accounts, check whether one is already recorded, and write only after confirmation with a passing check; it never changes existing entries. Skip bank or card export files (beancount-import), statements (beancount-reconcile), finance-app migrations, options trades (beancount-options), investment trades, dividends, splits, and vests (beancount-trade), month-end close, edits to existing entries, and ledgers hosted on Beancount.io.

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

bex-co/beancount-io3152026年10月26日 更新

Answer explicit requests for facts from a local Beancount ledger using shown, reproducible bea queries and reports for spending, trends, net worth, holdings, subscriptions and anomalies. Do not select this skill merely to gather preliminary inputs for buy/sell decisions or tax recommendations, even if ledger facts could help. Strictly read-only; figures come from executed queries. Skip ledgers hosted on Beancount.io, recording transactions (beancount-add), reconciliation, migration, ledger edits, option pricing or greeks, investment or tax advice, and general Beancount, BQL, or `bea` documentation questions (including what `bea ask` does).

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

bex-co/beancount-io3152026年10月26日 更新

Close an accounting period in a local Beancount ledger by reconciling each active account through beancount-reconcile, checking assertions and recurring gaps, reviewing flags, then proposing a commit with the period reports. Use for month-end close or wrapping up the books. Surface incomplete work and require a passing check before a confirmed commit; never push. Skip closing a single account (a `close` directive; beancount-add) and ledgers hosted on Beancount.io.

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

bex-co/beancount-io3152026年10月26日 更新

Record bank/card transactions in an existing local Beancount ledger from CSV, OFX/QFX, QIF or PDF statements, including PDF-only banks with no CSV export. For a PDF ledger import, read this SKILL.md before the PDF helper's guide to establish account, deduplication and confirmation rules, then use the helper for extraction. Import broker activity CSVs or holdings/cost-basis exports as lot-carrying entries or opening lots. Read this guide before beancount-trade for these files; skip described trades (beancount-trade). Normalize signs, suggest categories from existing accounts, review duplicates and confirm before bea writes; PDF statements must tie out and end with a balance assertion. Skip standalone PDF extraction/OCR, summarization or editing without a ledger import; account-versus-statement comparisons (beancount-reconcile), full finance-app migrations, reusable importer authoring, individual options trades, single manual entries (beancount-add), ledger `option` settings, and ledgers hosted on Beancount.io.

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

bex-co/beancount-io3152026年10月26日 更新

Write or repair a reusable Beangulp importer from a sample bank export for a local ledger, with reviewed golden files and a passing test harness. Use when a source needs a tested Python importer or its format changed, e.g. "write a beangulp importer for my bank's CSV" or "my importer broke after the bank renamed its columns". Wire the confirmed runner through bea ingest; keep generate/test in the authoring project. Skip one-off imports, reconciliation, finance-app migration, ledger writes, and ledgers hosted on Beancount.io.

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

bex-co/beancount-io3152026年10月26日 更新

bex-co のスキルをすべて見る

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