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

etiology

Bug-fix discipline — every defect has an etiology, the chain of cause that produced the observable fault; trace it before patching. Errors only grow: a bandaid leaks unless genuinely localized and leak-free. Walk the diagnostic ladder (presentation → proximate cause → API contract → isolated or systemic) before writing the fix. Use when authoring or reviewing any bug fix, regression patch, "quick fix" PR, or when deciding whether to ship, defer, or refactor.

インストール方法を見る

含まれるファイル(1)

  • SKILL.md4.7 KB

SKILL.md(原文)

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

etiology

The temptation in a bug fix is to suppress the symptom. The discipline is to know which fix you wrote: the one that addressed the cause, or the one that masked it. Every bug has an etiology — the chain of cause that produced the observable fault — and a fix is only honest once that chain has been traced.

Errors only grow. A bandaid leaks into adjacent call sites, and the next reader inherits both the original defect and the workaround that obscures it. Be fixated on the etiology; the symptom is what alerted you to the bug, not the bug itself. A bandaid is occasionally correct, but it is never the default.

The diagnostic ladder

Before writing the fix, walk the ladder. Each rung is a question the next rung depends on; skipping a rung produces a fix that doesn't know what it is.

  1. Presentation. What is the user-observable fault? State the symptom precisely — not the suspected cause, the symptom.
  2. Proximate cause. Which specific code is wrong, and is the defect at the line you would patch, or upstream of it? The line that fires the error is rarely the line that contains it.
  3. API contract. Was the abstraction we relied on misleading — i.e., would another developer following normal patterns re-trigger the same bug at a different call site? If yes, the defect is in the interface, not the caller.
  4. Isolated or systemic. Is this a self-contained oversight, or one presentation of a broader pathology in the surrounding code? If broader, scope the fix to the broader cause; patching one of N produces N − 1 future bug reports.

Stating in the PR description which rung you stopped at — and why — keeps the review honest.

Coverage cuts both ways

  • Should-have-been covered. The defect slipped a test that ought to exist. The fix carries that test — coverage earned by a regression is the cheapest coverage you will ever buy.
  • Impossible to cover. Interactive timing, render-order asymmetries, benchmark-only drift, layered composition where the execution order is the behavior — defects of this kind have no defense once shipped. That raises the bar on the fix, not lowers it. Prefer the underlying refactor; if you must ship a surgical patch, document the constraint at the call site so the next reader sees both the symptom and the rule that keeps it from recurring.

The wrong inference is "we cannot test it, so any fix will do." The correct inference is the opposite: untestable surfaces warrant more skepticism, not less.

When a bandaid is acceptable

Two conditions, both required:

  • Localized. One call site; no change to a contract anything else relies on.
  • Leak-free. Another developer following normal patterns elsewhere in the codebase cannot accidentally undo the fix or re-trigger the bug. A fix that depends on tribal knowledge — "don't do X near this code" — has already leaked by the time it ships.

Failing either, extract the underlying fix or defer. A bandaid guarded only by lore is debt the next reader inherits without context.

Deferral is an honest answer

Sometimes the correct fix is no fix yet. Rare presentation, large refactor, leaky bandaid — defer, file the diagnostic-ladder findings, and revisit when the refactor lands. Deferring after the ladder, with the reasoning recorded, is engineering. Downgrading to a bandaid because the refactor felt expensive — and writing the PR as if the bandaid were the only option — is not.

The cost of the refactor is also frequently estimated, not measured. A thirty-minute investigation of the cause often reveals that the underlying fix is cheaper than the long tail of the bandaid it would have replaced.

The short version

  • Errors only grow. Default to the underlying fix; the bandaid is the exception, not the rule.
  • Walk the ladder before writing the fix: presentation → proximate cause → API contract → isolated vs. systemic.
  • Untestable defects warrant more skepticism, not less. They ship without a defense.
  • A bandaid is acceptable only when localized and leak-free. Otherwise extract the underlying fix, or defer.
  • Deferral with a written reason is honest. Bandaiding because the refactor felt expensive is not.

レビュー

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

同じリポジトリのスキル

概要と使いどころ

Grida AI agent system work: `@grida/daemon` (DaemonServer, loopback HTTP perimeter, files/workspaces, secrets store, daemon discovery) and `@grida/agent` (the agent tenant: sessions, providers/BYOK, runtime/tool execution, skills discovery, prompts, tiers, sandbox hosts). Use for `packages/grida-daemon/**`, `packages/grida-ai-agent/**`, desktop sidecar protocol changes, agent chat transport, and bugs in agent state or streams. For pure Electron window, preload, menu, deep-link, or CDP work, use `desktop`.

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

gridaco/grida2,6682026年10月12日 更新

ai-models

無料

Research, compare, and update shared AI model JSON for TypeScript, web, and Rust consumers. Covers text model tiers, image and video generation models, image tool models, release provenance, pricing data sourcing, and provider-cost metering against prepaid org credit. Use when bumping model versions, adding new models, updating pricing, or auditing model specs against provider documentation.

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

gridaco/grida2,6682026年10月12日 更新

React-specific code shape in the Grida editor. Hooks cannot be tested or benchmarked and silently break tuned UX under layered composition, so they are barred from the engine and main system — load-bearing logic lives in classes and namespaces, hooks only as thin edge wires. `data-testid` follows component-root discipline: one per significant component, not scattered. Use when authoring React in `editor/grida-canvas-react/`, `editor/components/`, `editor/scaffolds/`, or `editor/app/*`.

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

gridaco/grida2,6682026年10月12日 更新

code-ts

無料

TypeScript code shape inside a well-named module — taste, not lint. Prefer one class or namespace per file (the unit a test targets) over scattered free exports; consolidate related code, don't fragment. The unit of code should be the unit of spec. Use when authoring TS in `editor/grida-canvas*`, `editor/lib/`, or `packages/*`. Sibling to the `naming` skill; React-specific shape lives in `code-react`.

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

gridaco/grida2,6682026年10月12日 更新

database

無料

Use BEFORE editing any file in `supabase/migrations/` or `supabase/schemas/`, OR when the user runs a `/database` subcommand (`compact local migration`, `rls scenarios`, `align`). Encodes the three contracts that protect the Grida database layer: applied migrations are immutable, RLS implementation mirrors tests (never the reverse), `schemas/*.sql` is the human-readable end-state. Companion to `supabase/AGENTS.md` (RLS, grants, security boundaries).

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

gridaco/grida2,6682026年10月12日 更新

desktop

無料

Grida Desktop Electron shell and release-impact work: BrowserWindow, preload, `window.grida`, menus, protocol/deep links, file associations, Forge, path-scoped bridge security, Electron-only UI bugs, and CDP / Playwright verification. Use for `desktop/`, `editor/app/desktop/**`, `editor/scaffolds/desktop/**`, `editor/lib/desktop/**`, `/desktop/*` CSP, GRIDA-SEC-004, and deciding whether linked-package or hosted-renderer changes require a native Desktop version bump or coordinated release. For implementing daemon/agent-tenant core behavior, use `agent-system` as well.

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

gridaco/grida2,6682026年10月12日 更新

gridaco のスキルをすべて見る

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