diff --git a/.claude-plugin/marketplace.json b/.claude-plugin/marketplace.json index a75978a..38350bd 100644 --- a/.claude-plugin/marketplace.json +++ b/.claude-plugin/marketplace.json @@ -1,7 +1,7 @@ { "$schema": "https://anthropic.com/claude-code/marketplace.schema.json", "name": "waza", - "description": "Personal skill collection for Claude Code, Codex, Antigravity, OpenCode, and Pi: think, check, hunt, design, read, write, learn, and health for agent config and AI maintainability audits.", + "description": "Personal skill collection for Claude Code, Codex, Antigravity, OpenCode, and Pi: think, check, hunt, ui, read, write, learn, and health for agent config and AI maintainability audits.", "owner": { "name": "Tw93", "email": "hitw93@gmail.com" @@ -9,7 +9,7 @@ "plugins": [ { "name": "waza", - "description": "Installs the full Waza toolkit. Registers all eight skills under the waza namespace, callable as /waza:think, /waza:check, /waza:hunt, /waza:design, /waza:read, /waza:write, /waza:learn, and /waza:health. For one skill on Claude Code v2.1.143 or newer, use /plugin install waza-@waza.", + "description": "Installs the full Waza toolkit. Registers all eight skills under the waza namespace, callable as /waza:think, /waza:check, /waza:hunt, /waza:ui, /waza:read, /waza:write, /waza:learn, and /waza:health. For one skill on Claude Code v2.1.143 or newer, use /plugin install waza-@waza.", "version": "3.29.0", "category": "development", "source": "./", @@ -27,18 +27,6 @@ ], "strict": false }, - { - "name": "waza-design", - "description": "Produces distinctive, production-grade UI for pages, components, visual interfaces, typography, and screenshot-driven polish. Use when users ask in any language for UI, page, component, frontend, typography, screenshot-grounded visual polish, or complaints that a screen looks unclear, ugly, inconsistent, or visually wrong. Not for backend logic or data pipelines.", - "version": "3.29.0", - "category": "development", - "source": "./skills/design", - "homepage": "https://github.com/tw93/Waza", - "skills": [ - "./" - ], - "strict": false - }, { "name": "waza-health", "description": "Runs a budget-aware agent-assisted engineering health audit for instruction/config drift, hooks/MCP, verifier surfaces, and AI maintainability. Use when users ask in any language to audit Claude, Codex, Pi, agent instructions, MCP or hooks, verifier coverage, or AI-maintainability drift. Not for debugging application code or reviewing PRs.", @@ -99,6 +87,18 @@ ], "strict": false }, + { + "name": "waza-ui", + "description": "Produces distinctive, production-grade UI for pages, components, visual interfaces, typography, and screenshot-driven polish. Use when users ask in any language for UI, page, component, frontend, typography, screenshot-grounded visual polish, or complaints that a screen looks unclear, ugly, inconsistent, or visually wrong. Not for backend logic or data pipelines.", + "version": "3.29.0", + "category": "development", + "source": "./skills/ui", + "homepage": "https://github.com/tw93/Waza", + "skills": [ + "./" + ], + "strict": false + }, { "name": "waza-write", "description": "Rewrites and polishes prose in Chinese or English, removes AI-like wording, and reviews product localization copy while preserving intent for drafts, docs, release notes, launch copy, and social posts. Use when users ask in any language to draft, rewrite, proofread, localize, polish release notes, remove AI-like wording, or prepare launch and social copy. Not for code comments, commit messages, or inline docs.", diff --git a/AGENTS.md b/AGENTS.md index 713326c..eb0ef99 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -4,7 +4,7 @@ This file is the canonical agent guide for the Waza repository. `CLAUDE.md` is a ## Project -Waza is a skill collection for engineering workflows. The repository contains eight skills: `think`, `design`, `check`, `hunt`, `write`, `learn`, `read`, and `health`. +Waza is a skill collection for engineering workflows. The repository contains eight skills: `think`, `ui`, `check`, `hunt`, `write`, `learn`, `read`, and `health`. ## Repository Map @@ -54,7 +54,7 @@ Examples: `verify_skills.py` is a script; `rules/english.md` and `rules/chinese. - Put adaptive, judgment-heavy workflows in skills. - Put deterministic checks, lookups, and table-driven validation in scripts. - `rules/anti-patterns.md` owns cross-skill always-on behavioral guardrails (AI failure modes that apply regardless of active skill). Per-skill gotchas stay in each `skills/*/SKILL.md` Gotchas table; a gotcha belongs in `rules/anti-patterns.md` only when it applies identically across all eight skills. -- Catalogs consolidate, they do not accumulate. This covers `rules/anti-patterns.md` rows and every reference example list, banned-phrase list, and replacement table (`skills/write/references/*`, `skills/design/references/*`, and the like). Before adding a row, pattern, banned phrase, or example, find the existing row or principle it instantiates and fold it in; never append a near-synonym or a third encoding of a rule already stated above. Keep wording generic enough to ship outside this repo. A reference file that re-lists items it already covers under a numbered pattern is drift, not coverage. +- Catalogs consolidate, they do not accumulate. This covers `rules/anti-patterns.md` rows and every reference example list, banned-phrase list, and replacement table (`skills/write/references/*`, `skills/ui/references/*`, and the like). Before adding a row, pattern, banned phrase, or example, find the existing row or principle it instantiates and fold it in; never append a near-synonym or a third encoding of a rule already stated above. Keep wording generic enough to ship outside this repo. A reference file that re-lists items it already covers under a numbered pattern is drift, not coverage. - The no-op test prunes skill prose sentence by sentence: a line earns its place only if it changes behavior versus the model's default. A line that re-teaches what a capable model already does (`be thorough` to an already-thorough agent) is a no-op you pay context load to say nothing; delete the whole sentence, do not trim words from it. When unsure whether a line states a default, assume it does and cut. - Leading words collapse a restated quality into one pretrained token the model already thinks with: `fast, deterministic, low-overhead` becomes a `tight` loop; `a repro you trust` becomes the loop that goes `red` on the bug. One token anchors a whole region of behavior and gives a sharper hook than the spelled-out triad, at fewer tokens. When a skill states the same quality three times, that is the passage to collapse into a leading word. - Keep `skills/RESOLVER.md` in sync when a skill description, trigger, or scope changes. diff --git a/README.md b/README.md index d5feb19..4de70fb 100644 --- a/README.md +++ b/README.md @@ -11,18 +11,8 @@
-## Why - -Waza (技, わざ) is a Japanese martial arts term for technique: a move practiced until it becomes instinct. - -A good engineer does not just write code. They think through requirements, review their own work, debug systematically, design interfaces that feel intentional, and read primary sources. They write clearly, and learn new domains by producing output, not consuming content. - -AI is more capable than most engineers at raw output. But without structure, that capability drifts into generic, imprecise work. Waza channels it into precision: eight skills that set clear goals and constraints, then let the model do what it does best. - -Part of a trilogy: [Kaku](https://github.com/tw93/Kaku) (書く) writes code, [Waza](https://github.com/tw93/Waza) (技) drills habits, [Kami](https://github.com/tw93/Kami) (紙) ships documents. Think of them as a family: Kaku is the dad, Waza the big sister, Kami the little sister. -
- +
## Skills @@ -32,7 +22,7 @@ Each engineering habit gets an installed skill. In Claude Code, type the slash c | Skill | When | What it does | | :--- | :--- | :--- | | [`/think`](skills/think/SKILL.md) | Before building anything new | Challenges the problem, pressure-tests the design, and produces a decision-complete plan another agent can implement. | -| [`/design`](skills/design/SKILL.md) | Building frontend interfaces | Produces distinctive UI, including screenshot-driven aesthetic iteration, with a committed direction rather than generic defaults. | +| [`/ui`](skills/ui/SKILL.md) | Building frontend interfaces | Produces distinctive UI, including screenshot-driven aesthetic iteration, with a committed direction rather than generic defaults. | | [`/check`](skills/check/SKILL.md) | After a task, before merging or release | Reviews the diff, extracts project-specific constraints, handles approved release/publish/push/reaction follow-through, and verifies with evidence. | | [`/hunt`](skills/hunt/SKILL.md) | Any bug, regression, or unexpected behavior | Systematic debugging. Root cause confirmed before any fix is applied, especially when something used to work. | | [`/write`](skills/write/SKILL.md) | Writing or editing prose | Rewrites prose to sound natural in Chinese and English. Cuts stiff, formulaic phrasing. | @@ -68,30 +58,20 @@ codex plugin add waza@waza **Pi**: `pi install npm:@tw93/waza` (update with `pi update npm:@tw93/waza`). `/health` audits Pi settings alongside Claude Code and Codex. -To hear about new versions, watch [GitHub Releases](https://github.com/tw93/Waza/releases). - -## Project Context - -Waza keeps the generic programmer habits inside the public skill. `/check` becomes project-aware by reading the target repository's public context and the user's task constraints. - -- Project commands come from README files, package manifests, Makefiles, CI workflows, and explicit user instructions. -- Project hard stops include generated artifacts, protected files, version synchronization, release assets, and domain-specific safety risks. -- Public docs and examples must not include credentials, certificate paths, private key filenames, tokens, or personal machine details. - -See [`skills/check/references/project-context.md`](skills/check/references/project-context.md) for the review context template. - ## Chaining Skills -Skills are designed to be chained together, but transitions are manual. Each skill stops after completing its task and waits for you to decide the next step. +Skills chain together, but every transition is a manual step you trigger. Each skill finishes its task and stops, waiting for you to decide what comes next. **Common workflows:** -- **Design a feature**: `/think` → approve → say "implement X" → `/check` → merge +- **Plan a feature**: `/think` → approve → say "implement X" → `/check` → merge - **Ship a fix**: `/hunt` → fix → `/check` → release/publish/push/issue follow-through - **Research and write**: `/read` (fetch sources) → `/learn` (synthesize) → `/write` (polish) - **Debug and verify**: `/hunt` (find root cause) → fix → `/check` (review changes) -Each arrow represents a manual user action. Skills don't automatically trigger each other. +## Project Context + +Waza ships only generic engineering habits. `/check` becomes project-aware at runtime by reading the target repository's public context (READMEs, package manifests, Makefiles, CI workflows) and your task constraints, never private paths, credentials, or tokens. See [`skills/check/references/project-context.md`](skills/check/references/project-context.md) for the review context template. ## Extras @@ -138,6 +118,16 @@ curl -sL https://github.com/tw93/Waza/releases/latest/download/setup-rule.sh | b Curl URLs use the latest GitHub release asset. Set `WAZA_REF=main` before the command if you want bleeding-edge scripts. +## Why + +Waza (技, わざ) is a Japanese martial arts term for technique: a move practiced until it becomes instinct. + +A good engineer does more than write code. They pressure-test requirements, debug to root cause, review their own diffs, and read primary sources. AI has the raw output for all of it, but without structure that output drifts into generic, imprecise work. Each Waza skill sets a clear goal and the constraints that matter, then steps back and lets the model work. As models improve, that restraint pays compound interest. + +Tools like Superpowers and gstack are powerful but heavy: too many skills, too much configuration. Waza stays small, eight skills for the habits that actually matter, each with one job and a clear trigger. Built from real projects and refined through 300+ sessions across 7 projects, every gotcha traces to a real failure. The `/health` skill grew from the six-layer Claude Code framework in [this post](https://tw93.fun/en/2026-03-12/claude.html). + +Part of a trilogy: [Kaku](https://github.com/tw93/Kaku) (書く) writes code, [Waza](https://github.com/tw93/Waza) (技) drills habits, [Kami](https://github.com/tw93/Kami) (紙) ships documents. Think of them as a family: Kaku is the dad, Waza the big sister, Kami the little sister. + ## Uninstall ```bash @@ -150,21 +140,10 @@ rm -f ~/.claude/rules/waza-routing.md For Claude Desktop, delete Waza from Customize > Skills. For Codex rule installs, remove the marked Waza blocks from `~/.codex/AGENTS.md`. -## Background - -Tools like Superpowers and gstack are impressive but heavy: too many skills, too much configuration, too steep a learning curve. - -Every rule the author writes is also a ceiling. The model can only do what the instructions say. Waza goes the other way: each skill sets a clear goal and the constraints that matter, then steps back. As models improve, that restraint pays compound interest. - -Eight skills for the habits that actually matter. Each does one thing, has a clear trigger, and stays out of the way. Built from real projects, refined through 300+ sessions across 7 projects. Every gotcha traces to a real failure. - -The `/health` skill grew from the six-layer Claude Code framework described in [this post](https://tw93.fun/en/2026-03-12/claude.html), and now covers Codex, Claude Code, Pi, verifier surfaces, and AI maintainability. - ## Support - The most direct way to support me is getting [Mole for Mac](https://mole.fit), my paid Mac cleanup app. -- If Waza helped you, [share it](https://twitter.com/intent/tweet?url=https://github.com/tw93/Waza&text=Waza%20-%20AI%20coding%20skills%20for%20the%20complete%20engineer.) with friends or give it a star. -- Got ideas or bugs? Open an issue or PR, feel free to contribute your best AI model. +- If Waza helped you, give it a star, [share it](https://twitter.com/intent/tweet?url=https://github.com/tw93/Waza&text=Waza%20-%20AI%20coding%20skills%20for%20the%20complete%20engineer.), or open an issue or PR. - I have two cats, TangYuan and Coke. If you think Waza delights your life, you can feed them canned food 🥩.
diff --git a/assets/waza_skills.svg b/assets/waza_skills.svg new file mode 100644 index 0000000..6f12914 --- /dev/null +++ b/assets/waza_skills.svg @@ -0,0 +1,82 @@ + + + + + + + + + + + + + + + +Design + + + + /think + Pressure-test before code + + + + + /ui + No generic AI aesthetics + + + + + +Solve + + + + /hunt + Root cause before fix + + + + + /check + Review diff before merge + + + + + +Express + + + + /read + Clean Markdown via proxy + + + + + /write + Strip AI writing patterns + + + + + +Grow + + + + /learn + Six-phase research workflow + + + + + /health + Audit config when off + + + + \ No newline at end of file diff --git a/plugins/waza/.codex-plugin/plugin.json b/plugins/waza/.codex-plugin/plugin.json index 824295e..2ae628e 100644 --- a/plugins/waza/.codex-plugin/plugin.json +++ b/plugins/waza/.codex-plugin/plugin.json @@ -1,7 +1,7 @@ { "name": "waza", "version": "3.29.0", - "description": "Engineering workflow skills for Codex: think, check, hunt, design, read, write, learn, and health.", + "description": "Engineering workflow skills for Codex: think, check, hunt, ui, read, write, learn, and health.", "author": { "name": "Tw93", "email": "hitw93@gmail.com", @@ -23,7 +23,7 @@ "interface": { "displayName": "Waza", "shortDescription": "Engineering workflow skills for Codex", - "longDescription": "Waza packages eight engineering habits as Codex skills: think for planning, check for review, hunt for debugging, design for frontend work, read for source intake, write for prose, learn for domain research, and health for agent configuration audits.", + "longDescription": "Waza packages eight engineering habits as Codex skills: think for planning, check for review, hunt for debugging, ui for frontend work, read for source intake, write for prose, learn for domain research, and health for agent configuration audits.", "developerName": "Tw93", "category": "Developer Tools", "capabilities": [ diff --git a/plugins/waza/rules/waza-routing.md b/plugins/waza/rules/waza-routing.md index 389fb7f..258478e 100644 --- a/plugins/waza/rules/waza-routing.md +++ b/plugins/waza/rules/waza-routing.md @@ -5,7 +5,7 @@ Waza ships eight installed skills. When a request matches a trigger below, prefe | skill | use when | |---------|-------------------------------------------------------------------------------------------| | think | new feature / architecture / "怎么设计" / "有没有必要" / "值不值得" / product judgment | -| design | UI / page / component / frontend / typography / screenshot says "丑/不清晰/不和谐" | +| ui | UI / page / component / frontend / typography / screenshot says "丑/不清晰/不和谐" | | check | review / "看看代码" / pre-merge / "继续优化" / release / push / close issue | | hunt | error / crash / regression / test failure / "以前是好的" / screenshot proves regression | | write | draft / rewrite / proofread / "去 AI 味" / tweet / launch copy / document review | diff --git a/plugins/waza/skills/RESOLVER.md b/plugins/waza/skills/RESOLVER.md index 2597b95..0f6ebce 100644 --- a/plugins/waza/skills/RESOLVER.md +++ b/plugins/waza/skills/RESOLVER.md @@ -15,7 +15,7 @@ | 触发 | 技能 | |------|------| | 新功能 / 架构决策 / "怎么设计" / "应该用什么方案" / "判断一下" / "有没有必要" / "值不值得" / 商业化/产品 pivot / 需要可执行计划或 handoff | `skills/think/SKILL.md` | -| UI / 组件 / 页面 / 视觉界面 / 前端 / 截图里说"丑"、"不清晰"、"很怪" / 真实截图视觉 polish | `skills/design/SKILL.md` | +| UI / 组件 / 页面 / 视觉界面 / 前端 / 截图里说"丑"、"不清晰"、"很怪" / 真实截图视觉 polish | `skills/ui/SKILL.md` | ### Post-build(交付前) @@ -46,12 +46,12 @@ 多个技能都可能匹配时按以下规则: -1. **最具体优先**:`/design` 比 `/think` 更具体(仅限 UI 决策)。用户说"帮我设计登录页"时优先 `/design`。 +1. **最具体优先**:`/ui` 比 `/think` 更具体(仅限 UI 决策)。用户说"帮我设计登录页"时优先 `/ui`。 2. **URL 按内容类型二次分流**:消息含 URL → 先走 `/read` 取回 Markdown → 如果用户要总结或分析,继续完成总结或分析;如果是长文研究性素材再接 `/learn`。 3. **改错 vs review**:代码已经交付或走到 PR → `/check`;代码跑不通或行为错了 → `/hunt`。两者都可能匹配"帮我看看",按"有没有具体错误现象"判断。 4. **配置/维护性异常 vs 代码错误**:Claude/Codex 本身不听话、hook 不触发、MCP 掉链子、AGENTS/CLAUDE/config.toml 漂移、`/health` 消耗 token、AI coding 腐化、上下文混乱、验证缺失或验证命令失真 → `/health`;用户写的代码抛异常 → `/hunt`。 5. **发布动作 vs 发布文案**:要写 release notes / changelog → `/write`;要提交、打 tag、publish、push、上传 release asset、补 GitHub release reactions、回复/关闭 issue → `/check`。 -6. **截图审美 vs 截图回归**:截图里说"丑/不好看/不清晰"且是审美校准 → `/design`;截图证明以前好的现在坏了、渲染错、状态错、生成物错 → `/hunt`。 +6. **截图审美 vs 截图回归**:截图里说"丑/不好看/不清晰"且是审美校准 → `/ui`;截图证明以前好的现在坏了、渲染错、状态错、生成物错 → `/hunt`。 7. **长文产出 vs 润色**:从零到成稿 → `/learn`;已有稿子要改 → `/write`。 8. **判断 vs 调试**:"判断一下" + 报错/异常/不工作 → `/hunt`(诊断问题);"判断一下" + 有没有必要/该不该保留/值不值得 → `/think` Evaluation Mode(价值判断)。 9. **继续优化 vs 调试**:"继续优化" / "优化代码" 不含报错或异常现象 → `/check`(代码质量改善);有具体报错或回归 → `/hunt`。 diff --git a/plugins/waza/skills/hunt/SKILL.md b/plugins/waza/skills/hunt/SKILL.md index 82cf3bf..fd49222 100644 --- a/plugins/waza/skills/hunt/SKILL.md +++ b/plugins/waza/skills/hunt/SKILL.md @@ -84,7 +84,7 @@ Treat the reference as evidence, not decoration: 4. Compare current vs. reference and name the exact delta. Do not generalize a visual defect into "style polish" when the evidence points to a broken render, race, font pipeline, or state path. 5. If the same symptom remains after one attempted fix, stop and rebuild the hypothesis from the evidence. Do not stack more patches onto a disproven explanation. -If the issue is purely subjective UI taste, route to `/design`. If it is rendering, state, timing, build output, font generation, or a regression from a known-good version, stay in `/hunt`. +If the issue is purely subjective UI taste, route to `/ui`. If it is rendering, state, timing, build output, font generation, or a regression from a known-good version, stay in `/hunt`. ## Scope Blast Mode diff --git a/plugins/waza/skills/design/SKILL.md b/plugins/waza/skills/ui/SKILL.md similarity index 97% rename from plugins/waza/skills/design/SKILL.md rename to plugins/waza/skills/ui/SKILL.md index 33dccbb..59590aa 100644 --- a/plugins/waza/skills/design/SKILL.md +++ b/plugins/waza/skills/ui/SKILL.md @@ -1,5 +1,5 @@ --- -name: design +name: ui description: "Produces distinctive, production-grade UI for pages, components, visual interfaces, typography, and screenshot-driven polish. Use when users ask in any language for UI, page, component, frontend, typography, screenshot-grounded visual polish, or complaints that a screen looks unclear, ugly, inconsistent, or visually wrong. Not for backend logic or data pipelines." when_to_use: "设计, 做页面, 做组件, 不好看, 不和谐, 不清晰, 很丑, 很怪, 很傻, 突兀, 不协调, 字体, 字形, 排印, 排版, 样式, 前端, UI, 截图, build page, create component, make it look good, style, design, screenshot with visual complaint, typography, font looks wrong" dispatch_intent: "UI, component, page, visual interface, frontend, artifact-grounded screenshot aesthetic complaint" @@ -30,7 +30,7 @@ If it could have been generated by a default prompt, it is not good enough. See [rules/durable-context.md](../../rules/durable-context.md) for when to read durable context, the read-order budget, and the memory-type mapping. -For `/design`, visual constraints are `decision`, `preference`, and `principle` entries; reusable product and UI patterns are `pattern` and `learning`. Current screenshots, rendered output, code, design tokens, and user feedback override memory. Reuse durable visual preferences and mature interaction patterns, but still name the current visual problem from the screenshot or source before changing code. +For `/ui`, visual constraints are `decision`, `preference`, and `principle` entries; reusable product and UI patterns are `pattern` and `learning`. Current screenshots, rendered output, code, design tokens, and user feedback override memory. Reuse durable visual preferences and mature interaction patterns, but still name the current visual problem from the screenshot or source before changing code. ## Visual Quick-Fix Mode diff --git a/plugins/waza/skills/design/references/design-aesthetic-quality.md b/plugins/waza/skills/ui/references/design-aesthetic-quality.md similarity index 100% rename from plugins/waza/skills/design/references/design-aesthetic-quality.md rename to plugins/waza/skills/ui/references/design-aesthetic-quality.md diff --git a/plugins/waza/skills/design/references/design-data-viz.md b/plugins/waza/skills/ui/references/design-data-viz.md similarity index 100% rename from plugins/waza/skills/design/references/design-data-viz.md rename to plugins/waza/skills/ui/references/design-data-viz.md diff --git a/plugins/waza/skills/design/references/design-reference.md b/plugins/waza/skills/ui/references/design-reference.md similarity index 100% rename from plugins/waza/skills/design/references/design-reference.md rename to plugins/waza/skills/ui/references/design-reference.md diff --git a/plugins/waza/skills/design/references/design-tokens.md b/plugins/waza/skills/ui/references/design-tokens.md similarity index 100% rename from plugins/waza/skills/design/references/design-tokens.md rename to plugins/waza/skills/ui/references/design-tokens.md diff --git a/plugins/waza/skills/design/references/design-traps.md b/plugins/waza/skills/ui/references/design-traps.md similarity index 100% rename from plugins/waza/skills/design/references/design-traps.md rename to plugins/waza/skills/ui/references/design-traps.md diff --git a/plugins/waza/skills/design/scripts/check-update.sh b/plugins/waza/skills/ui/scripts/check-update.sh similarity index 100% rename from plugins/waza/skills/design/scripts/check-update.sh rename to plugins/waza/skills/ui/scripts/check-update.sh diff --git a/rules/waza-routing.md b/rules/waza-routing.md index 389fb7f..258478e 100644 --- a/rules/waza-routing.md +++ b/rules/waza-routing.md @@ -5,7 +5,7 @@ Waza ships eight installed skills. When a request matches a trigger below, prefe | skill | use when | |---------|-------------------------------------------------------------------------------------------| | think | new feature / architecture / "怎么设计" / "有没有必要" / "值不值得" / product judgment | -| design | UI / page / component / frontend / typography / screenshot says "丑/不清晰/不和谐" | +| ui | UI / page / component / frontend / typography / screenshot says "丑/不清晰/不和谐" | | check | review / "看看代码" / pre-merge / "继续优化" / release / push / close issue | | hunt | error / crash / regression / test failure / "以前是好的" / screenshot proves regression | | write | draft / rewrite / proofread / "去 AI 味" / tweet / launch copy / document review | diff --git a/scripts/build_metadata.py b/scripts/build_metadata.py index b1a830d..3f442dd 100755 --- a/scripts/build_metadata.py +++ b/scripts/build_metadata.py @@ -50,7 +50,7 @@ CLAUDE_MARKETPLACE_TOP = { "name": "waza", "description": ( "Personal skill collection for Claude Code, Codex, Antigravity, " - "OpenCode, and Pi: think, check, hunt, design, read, write, learn, " + "OpenCode, and Pi: think, check, hunt, ui, read, write, learn, " "and health for agent config and AI maintainability audits." ), "owner": { @@ -62,7 +62,7 @@ CLAUDE_MARKETPLACE_TOP = { BUNDLE_DESCRIPTION = ( "Installs the full Waza toolkit. Registers all eight skills under the " "waza namespace, callable as /waza:think, /waza:check, /waza:hunt, " - "/waza:design, /waza:read, /waza:write, /waza:learn, and /waza:health. " + "/waza:ui, /waza:read, /waza:write, /waza:learn, and /waza:health. " "For one skill on Claude Code v2.1.143 or newer, use /plugin install " "waza-@waza." ) @@ -79,7 +79,7 @@ AUTHOR = { } CODEX_DESCRIPTION = ( - "Engineering workflow skills for Codex: think, check, hunt, design, read, " + "Engineering workflow skills for Codex: think, check, hunt, ui, read, " "write, learn, and health." ) CODEX_MIRROR_IGNORED_DIRS = { @@ -188,7 +188,7 @@ def build_codex_plugin(version: str) -> dict: "longDescription": ( "Waza packages eight engineering habits as Codex skills: " "think for planning, check for review, hunt for debugging, " - "design for frontend work, read for source intake, write for " + "ui for frontend work, read for source intake, write for " "prose, learn for domain research, and health for agent " "configuration audits." ), diff --git a/scripts/dispatcher-template.md b/scripts/dispatcher-template.md index f04ee3d..b193a65 100644 --- a/scripts/dispatcher-template.md +++ b/scripts/dispatcher-template.md @@ -1,6 +1,6 @@ --- name: waza -description: 'Dispatcher for Waza engineering skills: think (architecture/handoff), design (artifact-grounded UI), check (review/release gates), hunt (runtime debugging/regression), write (prose/release copy), learn (research), read (URL/PDF fetch), health (agent config and AI maintainability audit).' +description: 'Dispatcher for Waza engineering skills: think (architecture/handoff), ui (artifact-grounded interface design), check (review/release gates), hunt (runtime debugging/regression), write (prose/release copy), learn (research), read (URL/PDF fetch), health (agent config and AI maintainability audit).' --- # Waza: Engineering Skills Dispatcher @@ -24,12 +24,12 @@ You have eight skills available. Match the user's intent to the right skill, rea If the message could match multiple skills, use these disambiguation rules: -1. Most specific wins: `/design` is more specific than `/think` for UI decisions. +1. Most specific wins: `/ui` is more specific than `/think` for UI decisions. 2. URL in message: start with `/read`. If the content is research material, chain to `/learn`. 3. Code already done vs. code broken: done/PR -> `/check`; error/broken -> `/hunt`. 4. Config/maintainability vs. code: Codex/Claude misbehaving, hooks/MCP, `/health` token usage, AI coding code rot, unclear context, missing verification, or stale verifier output -> `/health`; user code errors -> `/hunt`. 5. Release action vs. release prose: commit/tag/publish/push/release reactions/close issue -> `/check`; write release notes/changelog text -> `/write`. -6. Screenshot taste vs. screenshot regression: visual taste complaint -> `/design`; broken render/state/generated output or used-to-work evidence -> `/hunt`. +6. Screenshot taste vs. screenshot regression: visual taste complaint -> `/ui`; broken render/state/generated output or used-to-work evidence -> `/hunt`. 7. From scratch vs. editing: new long-form output -> `/learn`; existing draft to polish -> `/write`. 8. "Judge this" + error -> `/hunt`; "judge this" + should we keep it -> `/think`. 9. Still ambiguous: read both skills' "Not for" sections; use exclusion. If still unclear, ask the user. diff --git a/scripts/dispatcher.md b/scripts/dispatcher.md index d00db8b..5de73b8 100644 --- a/scripts/dispatcher.md +++ b/scripts/dispatcher.md @@ -1,6 +1,6 @@ --- name: waza -description: 'Dispatcher for Waza engineering skills: think (architecture/handoff), design (artifact-grounded UI), check (review/release gates), hunt (runtime debugging/regression), write (prose/release copy), learn (research), read (URL/PDF fetch), health (agent config and AI maintainability audit).' +description: 'Dispatcher for Waza engineering skills: think (architecture/handoff), ui (artifact-grounded interface design), check (review/release gates), hunt (runtime debugging/regression), write (prose/release copy), learn (research), read (URL/PDF fetch), health (agent config and AI maintainability audit).' --- # Waza: Engineering Skills Dispatcher @@ -17,12 +17,12 @@ You have eight skills available. Match the user's intent to the right skill, rea | Intent | Skill | File | |--------|-------|------| | Code review, before merge, release gates, generated artifacts, safety sinks, publish/push/reaction follow-through, triage issues/PRs, project-wide code-quality audit scorecard | check | `skills/check/SKILL.md` | -| UI, component, page, visual interface, frontend, artifact-grounded screenshot aesthetic complaint | design | `skills/design/SKILL.md` | | Codex/Claude/Pi ignoring instructions, agent config audit, hooks/MCP broken, health token usage, AI coding code rot, hotspot ownership, unclear context, missing verification, stale verifier output | health | `skills/health/SKILL.md` | | Error, crash, regression, screenshot-reported defect, test failure, stale cache, runtime boundary, why broken | hunt | `skills/hunt/SKILL.md` | | Deep research, unfamiliar domain, compile sources into output | learn | `skills/learn/SKILL.md` | | Any URL or PDF to fetch, read this, fetch this page | read | `skills/read/SKILL.md` | | New feature, architecture, how should I design this, value judgment, executable plan, handoff | think | `skills/think/SKILL.md` | +| UI, component, page, visual interface, frontend, artifact-grounded screenshot aesthetic complaint | ui | `skills/ui/SKILL.md` | | Writing, editing prose, polish, release notes, launch/social copy, remove AI tone | write | `skills/write/SKILL.md` | @@ -34,12 +34,12 @@ You have eight skills available. Match the user's intent to the right skill, rea If the message could match multiple skills, use these disambiguation rules: -1. Most specific wins: `/design` is more specific than `/think` for UI decisions. +1. Most specific wins: `/ui` is more specific than `/think` for UI decisions. 2. URL in message: start with `/read`. If the content is research material, chain to `/learn`. 3. Code already done vs. code broken: done/PR -> `/check`; error/broken -> `/hunt`. 4. Config/maintainability vs. code: Codex/Claude misbehaving, hooks/MCP, `/health` token usage, AI coding code rot, unclear context, missing verification, or stale verifier output -> `/health`; user code errors -> `/hunt`. 5. Release action vs. release prose: commit/tag/publish/push/release reactions/close issue -> `/check`; write release notes/changelog text -> `/write`. -6. Screenshot taste vs. screenshot regression: visual taste complaint -> `/design`; broken render/state/generated output or used-to-work evidence -> `/hunt`. +6. Screenshot taste vs. screenshot regression: visual taste complaint -> `/ui`; broken render/state/generated output or used-to-work evidence -> `/hunt`. 7. From scratch vs. editing: new long-form output -> `/learn`; existing draft to polish -> `/write`. 8. "Judge this" + error -> `/hunt`; "judge this" + should we keep it -> `/think`. 9. Still ambiguous: read both skills' "Not for" sections; use exclusion. If still unclear, ask the user. diff --git a/scripts/skill_checks.py b/scripts/skill_checks.py index a26e55b..e4c98a5 100644 --- a/scripts/skill_checks.py +++ b/scripts/skill_checks.py @@ -48,7 +48,7 @@ FORCED_GITHUB_TOOL_RE = re.compile( ) CJK_RE = re.compile(r"[\u3400-\u4dbf\u4e00-\u9fff\uf900-\ufaff]") -DURABLE_CONTEXT_SKILLS = {"think", "check", "hunt", "design", "write", "health"} +DURABLE_CONTEXT_SKILLS = {"think", "check", "hunt", "ui", "write", "health"} NINJA_PREFIX = "Prefix your first line with 🥷 inline, not as its own paragraph." OUTCOME_CONTRACT_FIELDS = ("Outcome:", "Done when:", "Evidence:", "Output:") diff --git a/scripts/validate_package.py b/scripts/validate_package.py index 8ab0158..70db7a1 100644 --- a/scripts/validate_package.py +++ b/scripts/validate_package.py @@ -17,7 +17,7 @@ import sys from pathlib import Path -EXPECTED_SKILLS = ["think", "design", "check", "hunt", "write", "learn", "read", "health"] +EXPECTED_SKILLS = ["think", "ui", "check", "hunt", "write", "learn", "read", "health"] def main() -> int: diff --git a/skills/RESOLVER.md b/skills/RESOLVER.md index 2597b95..0f6ebce 100644 --- a/skills/RESOLVER.md +++ b/skills/RESOLVER.md @@ -15,7 +15,7 @@ | 触发 | 技能 | |------|------| | 新功能 / 架构决策 / "怎么设计" / "应该用什么方案" / "判断一下" / "有没有必要" / "值不值得" / 商业化/产品 pivot / 需要可执行计划或 handoff | `skills/think/SKILL.md` | -| UI / 组件 / 页面 / 视觉界面 / 前端 / 截图里说"丑"、"不清晰"、"很怪" / 真实截图视觉 polish | `skills/design/SKILL.md` | +| UI / 组件 / 页面 / 视觉界面 / 前端 / 截图里说"丑"、"不清晰"、"很怪" / 真实截图视觉 polish | `skills/ui/SKILL.md` | ### Post-build(交付前) @@ -46,12 +46,12 @@ 多个技能都可能匹配时按以下规则: -1. **最具体优先**:`/design` 比 `/think` 更具体(仅限 UI 决策)。用户说"帮我设计登录页"时优先 `/design`。 +1. **最具体优先**:`/ui` 比 `/think` 更具体(仅限 UI 决策)。用户说"帮我设计登录页"时优先 `/ui`。 2. **URL 按内容类型二次分流**:消息含 URL → 先走 `/read` 取回 Markdown → 如果用户要总结或分析,继续完成总结或分析;如果是长文研究性素材再接 `/learn`。 3. **改错 vs review**:代码已经交付或走到 PR → `/check`;代码跑不通或行为错了 → `/hunt`。两者都可能匹配"帮我看看",按"有没有具体错误现象"判断。 4. **配置/维护性异常 vs 代码错误**:Claude/Codex 本身不听话、hook 不触发、MCP 掉链子、AGENTS/CLAUDE/config.toml 漂移、`/health` 消耗 token、AI coding 腐化、上下文混乱、验证缺失或验证命令失真 → `/health`;用户写的代码抛异常 → `/hunt`。 5. **发布动作 vs 发布文案**:要写 release notes / changelog → `/write`;要提交、打 tag、publish、push、上传 release asset、补 GitHub release reactions、回复/关闭 issue → `/check`。 -6. **截图审美 vs 截图回归**:截图里说"丑/不好看/不清晰"且是审美校准 → `/design`;截图证明以前好的现在坏了、渲染错、状态错、生成物错 → `/hunt`。 +6. **截图审美 vs 截图回归**:截图里说"丑/不好看/不清晰"且是审美校准 → `/ui`;截图证明以前好的现在坏了、渲染错、状态错、生成物错 → `/hunt`。 7. **长文产出 vs 润色**:从零到成稿 → `/learn`;已有稿子要改 → `/write`。 8. **判断 vs 调试**:"判断一下" + 报错/异常/不工作 → `/hunt`(诊断问题);"判断一下" + 有没有必要/该不该保留/值不值得 → `/think` Evaluation Mode(价值判断)。 9. **继续优化 vs 调试**:"继续优化" / "优化代码" 不含报错或异常现象 → `/check`(代码质量改善);有具体报错或回归 → `/hunt`。 diff --git a/skills/hunt/SKILL.md b/skills/hunt/SKILL.md index 82cf3bf..fd49222 100644 --- a/skills/hunt/SKILL.md +++ b/skills/hunt/SKILL.md @@ -84,7 +84,7 @@ Treat the reference as evidence, not decoration: 4. Compare current vs. reference and name the exact delta. Do not generalize a visual defect into "style polish" when the evidence points to a broken render, race, font pipeline, or state path. 5. If the same symptom remains after one attempted fix, stop and rebuild the hypothesis from the evidence. Do not stack more patches onto a disproven explanation. -If the issue is purely subjective UI taste, route to `/design`. If it is rendering, state, timing, build output, font generation, or a regression from a known-good version, stay in `/hunt`. +If the issue is purely subjective UI taste, route to `/ui`. If it is rendering, state, timing, build output, font generation, or a regression from a known-good version, stay in `/hunt`. ## Scope Blast Mode diff --git a/skills/design/SKILL.md b/skills/ui/SKILL.md similarity index 97% rename from skills/design/SKILL.md rename to skills/ui/SKILL.md index 33dccbb..59590aa 100644 --- a/skills/design/SKILL.md +++ b/skills/ui/SKILL.md @@ -1,5 +1,5 @@ --- -name: design +name: ui description: "Produces distinctive, production-grade UI for pages, components, visual interfaces, typography, and screenshot-driven polish. Use when users ask in any language for UI, page, component, frontend, typography, screenshot-grounded visual polish, or complaints that a screen looks unclear, ugly, inconsistent, or visually wrong. Not for backend logic or data pipelines." when_to_use: "设计, 做页面, 做组件, 不好看, 不和谐, 不清晰, 很丑, 很怪, 很傻, 突兀, 不协调, 字体, 字形, 排印, 排版, 样式, 前端, UI, 截图, build page, create component, make it look good, style, design, screenshot with visual complaint, typography, font looks wrong" dispatch_intent: "UI, component, page, visual interface, frontend, artifact-grounded screenshot aesthetic complaint" @@ -30,7 +30,7 @@ If it could have been generated by a default prompt, it is not good enough. See [rules/durable-context.md](../../rules/durable-context.md) for when to read durable context, the read-order budget, and the memory-type mapping. -For `/design`, visual constraints are `decision`, `preference`, and `principle` entries; reusable product and UI patterns are `pattern` and `learning`. Current screenshots, rendered output, code, design tokens, and user feedback override memory. Reuse durable visual preferences and mature interaction patterns, but still name the current visual problem from the screenshot or source before changing code. +For `/ui`, visual constraints are `decision`, `preference`, and `principle` entries; reusable product and UI patterns are `pattern` and `learning`. Current screenshots, rendered output, code, design tokens, and user feedback override memory. Reuse durable visual preferences and mature interaction patterns, but still name the current visual problem from the screenshot or source before changing code. ## Visual Quick-Fix Mode diff --git a/skills/design/references/design-aesthetic-quality.md b/skills/ui/references/design-aesthetic-quality.md similarity index 100% rename from skills/design/references/design-aesthetic-quality.md rename to skills/ui/references/design-aesthetic-quality.md diff --git a/skills/design/references/design-data-viz.md b/skills/ui/references/design-data-viz.md similarity index 100% rename from skills/design/references/design-data-viz.md rename to skills/ui/references/design-data-viz.md diff --git a/skills/design/references/design-reference.md b/skills/ui/references/design-reference.md similarity index 100% rename from skills/design/references/design-reference.md rename to skills/ui/references/design-reference.md diff --git a/skills/design/references/design-tokens.md b/skills/ui/references/design-tokens.md similarity index 100% rename from skills/design/references/design-tokens.md rename to skills/ui/references/design-tokens.md diff --git a/skills/design/references/design-traps.md b/skills/ui/references/design-traps.md similarity index 100% rename from skills/design/references/design-traps.md rename to skills/ui/references/design-traps.md diff --git a/skills/design/scripts/check-update.sh b/skills/ui/scripts/check-update.sh similarity index 100% rename from skills/design/scripts/check-update.sh rename to skills/ui/scripts/check-update.sh diff --git a/tests/test_skills-add-e2e.sh b/tests/test_skills-add-e2e.sh index e9a7106..d6d3624 100644 --- a/tests/test_skills-add-e2e.sh +++ b/tests/test_skills-add-e2e.sh @@ -30,7 +30,7 @@ HOME="$test_home" npx --yes skills add "$tmpdir/repo" -a claude-code -g -y \ >"$tmpdir/install.out" 2>&1 # All 8 SKILL.md files landed under ~/.claude/skills/. -expected=(check design health hunt learn read think write) +expected=(check health hunt learn read think ui write) for skill in "${expected[@]}"; do target="$test_home/.claude/skills/$skill/SKILL.md" if [ ! -f "$target" ]; then diff --git a/tests/test_validators.sh b/tests/test_validators.sh index ff1592c..f266bb6 100755 --- a/tests/test_validators.sh +++ b/tests/test_validators.sh @@ -12,7 +12,7 @@ SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" source "$SCRIPT_DIR/test_helpers.sh" NINJA="Prefix your first line with 🥷 inline, not as its own paragraph." -SKILLS="think design check hunt write learn read health" +SKILLS="think ui check hunt write learn read health" # --- validate_package.py ----------------------------------------------------- stage=$(make_tmpdir)