Agent SkillsHmbown/Codewhale › cw-slice

cw-slice

GitHub

在编写代码前,通过搜索现有模块和依赖,避免重复实现。强制复用已有功能或标准库,确保变更范围最小化并绑定到单一可审查切片。

docs/skills/cw-slice/SKILL.md Hmbown/Codewhale

Trigger Scenarios

创建新功能 进行重构 升级现有功能 计划新建模块前

Install

npx skills add Hmbown/Codewhale --skill cw-slice -g -y
More Options

Non-standard path

npx skills add https://github.com/Hmbown/Codewhale/tree/main/docs/skills/cw-slice -g -y

Use without installing

npx skills use Hmbown/Codewhale@cw-slice

指定 Agent (Claude Code)

npx skills add Hmbown/Codewhale --skill cw-slice -a claude-code -g -y

安装 repo 全部 skill

npx skills add Hmbown/Codewhale --all -g -y

预览 repo 内 skill

npx skills add Hmbown/Codewhale --list

SKILL.md

Frontmatter
{
    "name": "cw-slice",
    "description": "Use before writing code for any Codewhale feature, upgrade, or refactor: find the existing owner of the behavior, bound the change to one reviewable slice, and fix the evidence bar before you start."
}

cw-slice

The expensive mistake in this repo is not a bad implementation — it is a second implementation. A new model_*, *_config, provider_*, or "bridge" module beside the one that already does the job ships two systems and a comment that is no longer true. This skill is the ponytail ladder's rung 2 with commands attached: find the thing that already exists, then edit it.

Stage 2 of the loop: cw-orientslicecw-gatescw-dogfoodcw-landcw-handoff.

When to use

  • Any feature, upgrade, refactor, or "make X work like Y" request.
  • Before creating a new module, trait, config struct, or command.
  • When a plan or issue tells you to build something and you have not yet confirmed it does not already exist.

Workflow

  1. Walk the ladder, out loud, before opening an editor. Stop at the first rung that answers, and say which one you stopped at:

    1. Does this need to exist? → skip it.
    2. Already in this codebase? → reuse it.
    3. Stdlib does it? → use it.
    4. Native platform feature? → use it.
    5. Installed dependency? → use it.
    6. One line? → one line.
    7. Only then: the minimum that works.

    The ladder runs after reading the code, never instead of it. A short diff written without reading the call sites is a guess, not a small change.

  2. Grep for the predecessor. This is the step that gets skipped and the one that costs the most:

    grep -rn "<the concept, in the words the code would use>" crates --include='*.rs' | head -40
    ls crates
    grep -rln 'model_\|_config\|provider_' crates/*/src --include='*.rs' | head -30
    

    Search behavior and symbols, not just filenames. If you find an owner, edit it. If you are still adding a new layer, its module doc must name the predecessor it replaces — otherwise you are editing the wrong file.

  3. Check the contracts you are about to walk into. These are the ones this repo actively guards, and a guard test fails if you duplicate them:

    • One turn loop: crates/tui/src/core/engine/turn_loop.rs, guarded by crates/core/tests/single_turn_loop.rs. Do not add a second.
    • One base prompt: BASE_PROMPT in crates/tui/src/prompts/text.rs.
    • The subagent tool is agent. Do not revive agent_open / agent_eval / agent_close / delegate_to_agent.
    • The system prompt + tool catalog are a session-pinned KV-cache prefix (docs/CACHE.md). Any new session-context contributor must state its cache effect — frozen prefix vs. append-only history. Never splice a volatile fact into the prefix.
    • crates/tui/src/core/ is a module inside the TUI crate. crates/core is a different crate that runs no turns. Do not confuse them.
    • Repeatedly misidentified as dead, verify consumers before removing: tui/src/context_budget.rs, tui/src/model_registry.rs, tui/src/prompt_zones.rs, tui/src/tools/remember.rs, config/src/route/.
  4. Read the scoped guidance for the files you will touch. crates/tui/AGENTS.md owns the UI contracts (one owner per fact, palette::grammar semantics, typed state enums, toast routing, tr(locale, MessageId::...) for user prose). crates/tui/locales/AGENTS.md owns string changes. web/AGENTS.md owns the site. docs/MOTION_CONTRACT.md owns motion. Design law lives in docs/design/, not in a prototype file someone left in a sibling directory.

  5. Bound the slice. One coherent change, reviewable in one sitting, that leaves the tree building and green. Two rules keep slices honest:

    • An abstraction must delete caller code. If adopting it is pure obligation — required methods, no default bodies that do work — it will be built, adopted once, and abandoned. Don't build it.
    • Migrate the last consumer, or do not start. Framework, one caller, ticket the rest, silence the warning: that is how two systems ship. If the migration will not fit in this slice, narrow the slice — never the adoption.
  6. Fix the evidence bar now, not after. Decide before writing code what will prove this works, and write it into your plan:

    • the focused test or existing check that covers the behavior (scripts/dev-test.sh --list maps an area to its fastest invocation);
    • whether the change is visible enough to need cw-dogfood;
    • whether it is cross-cutting enough to need the full sweep in cw-gates.
  7. Write the implementation first. Code first, then tests — this repo does not practice TDD, and that overrides any skill that says otherwise. Build it, prove it runs, then add or adjust tests to cover what you actually built. A regression test written after the fix still has to be shown failing without the fix.

Red flags / don't

  • Don't add a module that "bridges", "mirrors", "stages", or "wraps" something that already exists without naming that thing in the module doc.
  • Don't add a second turn loop, base prompt, delegation axis, or lifecycle system. The repo has exactly one of each on purpose.
  • Don't write tests first. Don't add tests by default either — add one when it cheaply protects safety, data integrity, protocol compatibility, or a reproduced regression.
  • Don't contort production code to keep a brittle assertion green. A test that only encodes old behavior is evidence, not a veto: change it with the code.
  • Don't cut trust-boundary validation, data-loss handling, security, or accessibility to make a diff shorter. Brevity is never a reason to drop a guard.
  • Don't leave a #[allow(dead_code)] behind as the cost of an incomplete migration — scripts/check-dead-code-budget.py is the running receipt.

Output

Before the first edit, state:

  • which rung of the ladder you stopped at and why;
  • the existing owner you found (path/to/file.rs:line), or the predecessor your new module names;
  • the bounded slice, in one sentence;
  • the evidence bar you will meet, chosen in advance.

Version History

  • aedb88b Current 2026-09-09 04:22

Same Skill Collection

crates/tui/assets/skills/batch/SKILL.md
crates/tui/assets/skills/best-of-n/SKILL.md
crates/tui/assets/skills/contributor-onboarding/SKILL.md
crates/tui/assets/skills/dataviz/SKILL.md
crates/tui/assets/skills/debug/SKILL.md
crates/tui/assets/skills/delegate/SKILL.md
crates/tui/assets/skills/dependency-update/SKILL.md
crates/tui/assets/skills/docx/SKILL.md
crates/tui/assets/skills/feishu/SKILL.md
crates/tui/assets/skills/fleet-manager/SKILL.md
crates/tui/assets/skills/frontend-design/SKILL.md
crates/tui/assets/skills/handoff/SKILL.md
crates/tui/assets/skills/help/SKILL.md
crates/tui/assets/skills/implement/SKILL.md
crates/tui/assets/skills/interview/SKILL.md
crates/tui/assets/skills/mcp-builder/SKILL.md
crates/tui/assets/skills/mcp-discovery/SKILL.md
crates/tui/assets/skills/pdf/SKILL.md
crates/tui/assets/skills/plan/SKILL.md
crates/tui/assets/skills/plugin-creator/SKILL.md
crates/tui/assets/skills/pptx/SKILL.md
crates/tui/assets/skills/research/SKILL.md
crates/tui/assets/skills/review/SKILL.md
crates/tui/assets/skills/security-review/SKILL.md
crates/tui/assets/skills/simplify/SKILL.md
crates/tui/assets/skills/skill-creator/SKILL.md
crates/tui/assets/skills/skill-installer/SKILL.md
crates/tui/assets/skills/test/SKILL.md
crates/tui/assets/skills/v4-best-practices/SKILL.md
crates/tui/assets/skills/verify/SKILL.md
crates/tui/assets/skills/webapp-testing/SKILL.md
crates/tui/assets/skills/xlsx/SKILL.md
docs/skills/codew-release-qa-sweep/SKILL.md
docs/skills/cw-dogfood/SKILL.md
docs/skills/cw-gates/SKILL.md
docs/skills/cw-handoff/SKILL.md
docs/skills/cw-land/SKILL.md
docs/skills/cw-orient/SKILL.md
docs/skills/gh-assign-issues/SKILL.md
docs/skills/gh-close-issues/SKILL.md
docs/skills/gh-compile-issues/SKILL.md
docs/skills/gh-credit-harvest/SKILL.md
docs/skills/gh-file-issue/SKILL.md
docs/skills/gh-find-prs/SKILL.md
docs/skills/gh-treasure-hunt/SKILL.md
crates/tui/assets/skills/documents/SKILL.md
crates/tui/assets/skills/presentations/SKILL.md
crates/tui/assets/skills/spreadsheets/SKILL.md

Metadata

Files
0
Version
aedb88b
Hash
e4c6d479
Indexed
2026-09-09 04:22

Home - Wiki
Copyright © 2011-2026 iteam. Current version is 2.155.2. UTC+08:00, 2026-09-16 10:13
浙ICP备14020137号-1 $Map of visitor$