@seanyao/roll 2026.504.1 → 2026.505.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -63,26 +63,25 @@ Unified behavioral conventions for Claude Code / Gemini CLI / Cursor / Codex —
63
63
 
64
64
  | Command | Description |
65
65
  |---------|-------------|
66
- | `roll setup` | First-time install: create `~/.roll/` + sync to all AI tools |
67
- | `roll update` | Update roll to latest version + re-sync |
68
- | `roll sync` | Re-sync conventions and skill symlinks to all AI tools |
66
+ | `roll setup` | First-time install on this machine, or re-sync after editing `~/.roll/config.yaml` (use `--force` to overwrite local cache) |
67
+ | `roll update` | One-step upgrade: `npm install -g @seanyao/roll@latest` + re-sync via `roll setup` |
69
68
  | `roll init` | New project: create `AGENTS.md` + `BACKLOG.md` + `docs/features/` |
70
- | `roll hook install` | Optional: global git hook for AI client auto-detection |
71
- | `roll reset` | Force-rebuild local cache from repo source, then re-sync |
69
+ | `roll hook install` | Optional: global git hook that tags commits with the active AI client |
72
70
  | `roll status` | Show sync state, skill links, and detected AI tools |
73
71
 
74
72
  ### Typical Flow
75
73
 
76
74
  ```bash
77
- # 1. Install
78
- ./install.sh
75
+ # 1. Install on this machine
76
+ npm install -g @seanyao/roll
77
+ roll setup
79
78
 
80
79
  # 2. Initialize a project (run from project root)
81
80
  cd my-app
82
81
  roll init
83
82
 
84
- # 3. Re-sync after editing ~/.roll/config.yaml
85
- roll sync
83
+ # 3. Upgrade to a new release
84
+ roll update
86
85
 
87
86
  # 4. Optional: tag commits with AI client name
88
87
  roll hook install
@@ -120,7 +119,7 @@ Global conventions are additive and never overwrite existing files. Project conv
120
119
 
121
120
  ## Skill System
122
121
 
123
- Skills are instructions that encode proven engineering practices into a form AI agents can reliably follow. They live in `~/.roll/skills/` and are symlinked into each AI client's skill directory on `roll sync`.
122
+ Skills are instructions that encode proven engineering practices into a form AI agents can reliably follow. They live in `~/.roll/skills/` and are symlinked into each AI client's skill directory on `roll setup`.
124
123
 
125
124
  ### Workflow
126
125
 
package/bin/roll CHANGED
@@ -4,7 +4,7 @@ set -euo pipefail
4
4
  # Roll — AI Agent Convention Manager
5
5
  # Single source of truth for how all AI coding agents behave.
6
6
 
7
- VERSION="2026.504.1"
7
+ VERSION="2026.505.2"
8
8
  ROLL_HOME="${ROLL_HOME:-${HOME}/.roll}"
9
9
  ROLL_CONFIG="${ROLL_HOME}/config.yaml"
10
10
  ROLL_GLOBAL="${ROLL_HOME}/conventions/global"
@@ -177,18 +177,18 @@ safe_copy() {
177
177
  fi
178
178
  echo ""
179
179
  warn "File exists and differs: ${dst/#$HOME/~} 文件已存在且内容不同: ${dst/#$HOME/~}"
180
- echo -e " ${BOLD}Overwrite?${NC} [y/N/d(iff)] "
180
+ echo -e " ${BOLD}Overwrite?${NC} [Y/n/d(iff)] "
181
181
  read -r answer
182
182
  case "$answer" in
183
183
  d|D|diff)
184
184
  diff --color=auto "$dst" "$src" || true
185
185
  echo ""
186
- echo -e " ${BOLD}Overwrite?${NC} [y/N] "
186
+ echo -e " ${BOLD}Overwrite?${NC} [Y/n] "
187
187
  read -r answer2
188
- [[ "$answer2" =~ ^[Yy]$ ]] || { info "Skipped: ${dst/#$HOME/\~} 已跳过: ${dst/#$HOME/\~}"; return; }
188
+ [[ "$answer2" =~ ^[Nn]$ ]] && { info "Skipped: ${dst/#$HOME/\~} 已跳过: ${dst/#$HOME/\~}"; return; }
189
189
  ;;
190
- y|Y) ;;
191
- *) info "Skipped: ${dst/#$HOME/~} 已跳过: ${dst/#$HOME/~}"; return ;;
190
+ n|N) info "Skipped: ${dst/#$HOME/~} 已跳过: ${dst/#$HOME/~}"; return ;;
191
+ *) ;; # empty answer or 'y' / 'Y' → overwrite (default Yes)
192
192
  esac
193
193
  fi
194
194
 
@@ -196,6 +196,27 @@ safe_copy() {
196
196
  ok "Wrote: ${dst/#$HOME/~} 已写入: ${dst/#$HOME/~}"
197
197
  }
198
198
 
199
+ # ─── Internal: prune files in $1 that no longer exist in $2 ──────────────────
200
+ # Used to clean up stale files left behind when a previous version had them
201
+ # but the current package no longer ships them.
202
+ _prune_dir() {
203
+ local installed_dir="$1"
204
+ local source_dir="$2"
205
+ local label="${3:-file}"
206
+ [[ -d "$installed_dir" ]] || return 0
207
+
208
+ local installed_f installed_fname
209
+ for installed_f in "$installed_dir"/* "$installed_dir"/.*; do
210
+ [[ -f "$installed_f" ]] || continue
211
+ installed_fname="$(basename "$installed_f")"
212
+ [[ "$installed_fname" == "." || "$installed_fname" == ".." ]] && continue
213
+ if [[ ! -f "$source_dir/$installed_fname" ]]; then
214
+ rm -f "$installed_f"
215
+ info "Removed stale $label: ${installed_dir##*/}/$installed_fname 已删除过时$label: ${installed_dir##*/}/$installed_fname"
216
+ fi
217
+ done
218
+ }
219
+
199
220
  # ─── Internal: pull skills from repo → ~/.roll/skills ──────────────────────
200
221
  _pull_skills() {
201
222
  if [[ ! -d "$ROLL_PKG_DIR/skills" ]]; then
@@ -214,6 +235,8 @@ _pull_skills() {
214
235
  for f in "$skill_dir"*; do
215
236
  [[ -f "$f" ]] && cp "$f" "$ROLL_HOME/skills/$skill_name/$(basename "$f")"
216
237
  done
238
+ # File-level prune (dir-level prune below catches whole-skill removals)
239
+ _prune_dir "$ROLL_HOME/skills/$skill_name" "$skill_dir" "skill file"
217
240
  fi
218
241
  done
219
242
 
@@ -250,6 +273,8 @@ _pull_conventions() {
250
273
  [[ -f "$f" ]] && [[ "$(basename "$f")" != "." ]] && [[ "$(basename "$f")" != ".." ]] && \
251
274
  safe_copy "$f" "$ROLL_GLOBAL/$(basename "$f")" "$force"
252
275
  done
276
+ # Prune stale files in ~/.roll/conventions/global/
277
+ _prune_dir "$ROLL_GLOBAL" "$ROLL_PKG_CONVENTIONS/global" "convention"
253
278
 
254
279
  info "Copying project templates... 正在复制项目模板..."
255
280
  for tpl_dir in "$ROLL_PKG_CONVENTIONS"/templates/*/; do
@@ -262,6 +287,8 @@ _pull_conventions() {
262
287
  [[ -f "$f" ]] && [[ "$(basename "$f")" != "." ]] && [[ "$(basename "$f")" != ".." ]] && \
263
288
  safe_copy "$f" "$ROLL_TEMPLATES/$tpl_name/$(basename "$f")" "$force"
264
289
  done
290
+ # Prune stale files in this template dir
291
+ _prune_dir "$ROLL_TEMPLATES/$tpl_name" "$tpl_dir" "template file"
265
292
  done
266
293
  }
267
294
 
@@ -291,7 +318,7 @@ _install_local() {
291
318
  info "Creating default config... 正在创建默认配置..."
292
319
  cat > "$ROLL_CONFIG" << 'YAML'
293
320
  # Roll Configuration
294
- # Edit this file, then run `roll sync` to apply.
321
+ # Edit this file, then run `roll setup` to apply.
295
322
 
296
323
  # AI tools — each entry controls both convention sync and skill linking
297
324
  # Format: <name>: <dir>|<config_file>|<convention_src>
@@ -515,34 +542,24 @@ cmd_setup() {
515
542
  }
516
543
 
517
544
  # ═══════════════════════════════════════════════════════════════════════════════
518
- # COMMAND: sync [--force]
519
- # Full pipeline: repo ~/.roll/ AI tool config paths
520
- # Pulls latest conventions from repo, then distributes to all AI tools.
545
+ # COMMAND: update
546
+ # Thin wrapper: upgrade the npm-installed package, then re-sync via setup.
547
+ # Equivalent to: npm install -g @seanyao/roll@latest && roll setup
521
548
  # ═══════════════════════════════════════════════════════════════════════════════
522
- cmd_sync() {
523
- if [[ ! -d "$ROLL_HOME" ]]; then
524
- err "~/.roll/ not found. Run 'roll setup' first. ~/.roll/ 不存在,请先运行 'roll setup'。"
549
+ cmd_update() {
550
+ info "Current version: roll v${VERSION} 当前版本: roll v${VERSION}"
551
+ info "Upgrading via npm... 正在通过 npm 升级..."
552
+ echo ""
553
+
554
+ if ! npm install -g @seanyao/roll@latest; then
555
+ err "npm install failed. Check network/proxy and try again. npm 安装失败,请检查网络/代理后重试。"
525
556
  exit 1
526
557
  fi
527
558
 
528
- local force=false
529
- while [[ $# -gt 0 ]]; do
530
- case "$1" in
531
- --force|-f) force=true; shift ;;
532
- *) err "Unknown sync argument: $1 未知同步参数: $1"; exit 1 ;;
533
- esac
534
- done
535
-
536
- info "Syncing from repo to AI tools... 正在从仓库同步到 AI 工具..."
537
- echo ""
538
- _pull_conventions "$force"
539
- _ensure_config_entries
540
- echo ""
541
- _sync_conventions "$force"
542
559
  echo ""
543
- _sync_skills "$force"
560
+ info "Re-syncing to AI tools... 正在重新同步到 AI 工具..."
544
561
  echo ""
545
- ok "Sync complete. 同步完成。"
562
+ cmd_setup
546
563
  }
547
564
 
548
565
  # ─── Helper: merge global AGENTS.md into project (no type prompt) ────────────
@@ -1007,46 +1024,6 @@ cmd_hook() {
1007
1024
  esac
1008
1025
  }
1009
1026
 
1010
- # ═══════════════════════════════════════════════════════════════════════════════
1011
- # COMMAND: reset
1012
- # Re-copy conventions and skills from repo source, force-sync everything
1013
- # ═══════════════════════════════════════════════════════════════════════════════
1014
- cmd_reset() {
1015
- warn "This will overwrite ~/.roll/conventions/ and skills with repo defaults. 此操作将用仓库默认值覆盖 ~/.roll/conventions/ 和技能。"
1016
- echo -n " Continue? [y/N] "
1017
- read -r answer
1018
- [[ "$answer" =~ ^[Yy]$ ]] || { info "Aborted. 已取消。"; return; }
1019
-
1020
- echo ""
1021
- info "Resetting and force-syncing... 正在重置并强制同步..."
1022
- cmd_setup --force
1023
- }
1024
-
1025
- # ═══════════════════════════════════════════════════════════════════════════════
1026
- # COMMAND: update
1027
- # Update roll to latest version (npm update or git pull), then re-sync
1028
- # ═══════════════════════════════════════════════════════════════════════════════
1029
- _is_git_install() {
1030
- [[ -d "$ROLL_PKG_DIR/.git" ]]
1031
- }
1032
-
1033
- cmd_update() {
1034
- info "Current version: roll v${VERSION} 当前版本: roll v${VERSION}"
1035
- echo ""
1036
-
1037
- if _is_git_install; then
1038
- info "Git install detected — pulling latest... 检测到 Git 安装,正在拉取最新代码..."
1039
- git -C "$ROLL_PKG_DIR" pull
1040
- else
1041
- info "npm install detected — updating package... 检测到 npm 安装,正在更新包..."
1042
- npm update -g @seanyao/roll
1043
- fi
1044
-
1045
- echo ""
1046
- info "Re-syncing to AI tools... 正在重新同步到 AI 工具..."
1047
- cmd_sync
1048
- }
1049
-
1050
1027
  # ═══════════════════════════════════════════════════════════════════════════════
1051
1028
  # COMMAND: status
1052
1029
  # Show current state of conventions
@@ -1222,17 +1199,15 @@ usage() {
1222
1199
  echo "用法: roll <command> [options]"
1223
1200
  echo ""
1224
1201
  echo "Commands:"
1225
- echo " setup [-f] [Machine] First-time install: init ~/.roll/ + sync 首次安装:初始化 ~/.roll/ 并同步"
1226
- echo " update [Upgrade] Update roll to latest + re-sync 更新 roll 到最新版本并重新同步"
1227
- echo " sync [-f] [Everyday] package → ~/.roll/ → AI tools 日常同步:从包同步到所有工具"
1202
+ echo " setup [-f] [Machine] First-time install or re-sync 首次安装或重新同步"
1203
+ echo " update [Upgrade] npm install latest + re-sync 一键升级到最新版"
1228
1204
  echo " init [Project] Create AGENTS.md + BACKLOG.md + docs/ 初始化项目工作流文件"
1229
1205
  echo " hook [install|remove] [Optional] Manage global git hook 管理全局 git hook"
1230
1206
  echo " status [Diagnostic] Show current state 显示当前状态"
1231
- echo " reset [Recovery] Force-rebuild from package source 强制从包源重建"
1232
1207
  echo ""
1233
1208
  echo "Examples / 示例:"
1234
- echo " roll setup # New machine: first-time install 新机器:首次安装"
1235
- echo " roll update # Get latest version + sync to AI tools 更新到最新版本并同步"
1209
+ echo " roll setup # New machine: first-time install 新机器首次安装"
1210
+ echo " roll update # Upgrade to latest version + re-sync 升级到最新版并重新同步"
1236
1211
  echo " roll init # New or re-merge project (run in project) 新建或重新合并(项目目录)"
1237
1212
  echo " roll hook install # Optional: tag commits with AI client 可选:提交时标记 AI 工具"
1238
1213
  }
@@ -1243,11 +1218,9 @@ main() {
1243
1218
 
1244
1219
  case "$cmd" in
1245
1220
  setup) cmd_setup "$@" ;;
1246
- sync) cmd_sync "$@" ;;
1247
- init) cmd_init "$@" ;;
1248
- hook) cmd_hook "$@" ;;
1249
1221
  update) cmd_update "$@" ;;
1250
- reset) cmd_reset "$@" ;;
1222
+ init) cmd_init "$@" ;;
1223
+ hook) cmd_hook "$@" ;;
1251
1224
  status) cmd_status "$@" ;;
1252
1225
  version|--version|-v) echo "roll v${VERSION}" ;;
1253
1226
  help|--help|-h|"") usage ;;
@@ -19,7 +19,9 @@
19
19
  ## 2. Code
20
20
  - **TS**: Strict, no `any`. Functional hooks. Early returns.
21
21
  - **Git**: No force-push main. No `--no-verify`. No secrets in git.
22
+ - **Identity**: When you need the user's name or email, read it dynamically — `git config user.name` / `git config user.email`. **Never hardcode personal data** (names, emails, machine paths, personal repo URLs) into files that get committed or shipped via npm. Author/repo metadata in `package.json` is the only allowed exception.
22
23
  - **Behavior**: No unrelated refactoring. No speculative abstractions.
24
+ - **File ops**: Prefer targeted edits over full file rewrites. Verify file exists before modifying.
23
25
 
24
26
  ## 3. Engineering
25
27
  - **Idempotency**: Same op N times = same result.
@@ -35,6 +37,10 @@
35
37
  user (e.g., specific CLI tool, remote server, hardware platform).
36
38
  - **Workspace**: `BACKLOG.md` index. `docs/features/` for details.
37
39
  - **Done**: Push + CI passes + deployed. Local-only is not done.
40
+ - **Commit message format**:
41
+ - Format: `<type>: <description>` (Git Hook may auto-prepend type prefix)
42
+ - Types: `Story N`, `Fix`, `Refactor`, `Docs`, `Chore`
43
+ - TCR micro-commits use `tcr:` prefix instead
38
44
 
39
45
  ## 5. Refactoring & Renames
40
46
 
@@ -49,3 +55,21 @@ is sufficient. Execute in order:
49
55
  6. **Shell environment** — remind user to reload or restart sessions
50
56
 
51
57
  Confirm each phase clean before proceeding to the next.
58
+
59
+ ## 6. Configuration & External Services
60
+ - **Config file editing** (YAML/TOML/JSON with schema):
61
+ 1. Find official documentation or a verified working example first
62
+ 2. Do not guess syntax
63
+ 3. If no docs found after 2 searches, ask user for a reference config
64
+ 4. Maximum 2 syntax attempts before escalating to research mode
65
+ - **External services** (npm publishing, proxy, auth-dependent deploy):
66
+ - Stop after 2 failed attempts and ask user for preferred fallback
67
+ - Do not continue iterating on auth/proxy debugging without explicit direction
68
+ - If OIDC/token issues persist, immediately fallback to manual with explanation
69
+
70
+ ## 7. Frontend Default Stack
71
+ - React + shadcn/ui + Tailwind CSS is the default.
72
+ - Use shadcn/ui components first. Custom components only when shadcn doesn't cover it.
73
+ - `components/ui/` is shadcn-generated — never edit manually.
74
+ - Tailwind utility classes only. No inline styles, no CSS modules.
75
+ - Icons: Lucide React.
@@ -3,18 +3,6 @@
3
3
  > Extends [AGENTS.md](./AGENTS.md) — read that first for shared conventions.
4
4
  > This file adds Claude Code-specific configuration only.
5
5
 
6
- ## Identity
7
-
8
- - Git: `Sean Yao <sean.dlut@gmail.com>`
9
- - Default branch: `main`
10
-
11
- ## Commit Message Format
12
-
13
- - Format: `<type>: <description>` (遵循 Git Hook 自动生成的前缀)
14
- - TCR micro-commits: `tcr: <description>` (No prefix)
15
- - Types: Story N, Fix, Refactor, Docs, Chore
16
- - Example: `Story 7: Review assignment by org structure`
17
-
18
6
  ## Claude Code-Specific
19
7
 
20
8
  - When a project has Roll skills, use them (`$roll-design`, `$roll-build`, `$roll-fix`, etc.).
@@ -22,32 +10,3 @@
22
10
  - Prefer Edit tool over Bash for file modifications.
23
11
  - Use Agent tool with worktree isolation for parallel independent subtasks.
24
12
  - When I say "帮我看下" or "处理下", go ahead and do it, not just analyze it.
25
-
26
- ## Verification and Testing
27
-
28
- Before claiming any fix is complete, verify it works in the target environment
29
- mentioned by the user. If they said a specific CLI tool, remote server, or
30
- hardware platform, test there explicitly. Do not claim completion until verified.
31
-
32
- ## Configuration File Editing
33
-
34
- When editing config files (YAML, TOML, JSON with schema):
35
- 1. Find official documentation or a verified working example first
36
- 2. Do not guess syntax
37
- 3. If no docs found after 2 searches, ask user for a reference config
38
- 4. Maximum 2 syntax attempts before escalating to research mode
39
-
40
- ## External Service Integration
41
-
42
- For npm publishing, proxy configurations, or auth-dependent deployment:
43
- - Stop after 2 failed attempts and ask user for preferred fallback
44
- - Do not continue iterating on auth/proxy debugging without explicit direction
45
- - If OIDC/token issues persist, immediately fallback to manual with explanation
46
-
47
- ## Frontend Default Stack
48
-
49
- - React + shadcn/ui + Tailwind CSS is the default.
50
- - Use shadcn/ui components first. Custom components only when shadcn doesn't cover it.
51
- - `components/ui/` is shadcn-generated — never edit manually.
52
- - Tailwind utility classes only. No inline styles, no CSS modules.
53
- - Icons: Lucide React.
@@ -3,26 +3,7 @@
3
3
  > Extends AGENTS.md in this directory — read that first for shared conventions.
4
4
  > This file adds Gemini CLI-specific configuration only.
5
5
 
6
- ## Identity
7
-
8
- - Git: `Sean Yao <sean.dlut@gmail.com>`
9
- - Default branch: `main`
10
-
11
- ## Commit Message Format
12
-
13
- - Format: `<type>: <description>` (遵循 Git Hook 自动生成的前缀)
14
- - TCR micro-commits: `tcr: <description>` (No prefix)
15
- - Types: Story N, Fix, Refactor, Docs, Chore
16
-
17
6
  ## Gemini-Specific
18
7
 
19
8
  - When running shell commands, prefer the most specific tool available.
20
- - For file operations, verify the file exists before modifying.
21
9
  - When a project has Roll workflow, follow the AGENTS.md conventions and use Roll skills.
22
- - Prefer targeted edits over full file rewrites.
23
-
24
- ## Frontend Default Stack
25
-
26
- - React + shadcn/ui + Tailwind CSS is the default.
27
- - Use shadcn/ui components first. Custom only when shadcn doesn't cover it.
28
- - Tailwind utility classes only. No inline styles, no CSS modules.
@@ -3,26 +3,7 @@
3
3
  > Extends AGENTS.md in this directory — read that first for shared conventions.
4
4
  > This file adds Trae IDE-specific configuration only.
5
5
 
6
- ## Identity
7
-
8
- - Git: `Sean Yao <sean.dlut@gmail.com>`
9
- - Default branch: `main`
10
-
11
- ## Commit Message Format
12
-
13
- - Format: `<type>: <description>` (遵循 Git Hook 自动生成的前缀)
14
- - TCR micro-commits: `tcr: <description>` (No prefix)
15
- - Types: Story N, Fix, Refactor, Docs, Chore
16
-
17
6
  ## Trae-Specific
18
7
 
19
8
  - When a project has Roll workflow, follow the AGENTS.md conventions and use Roll skills.
20
9
  - Use Solo mode for complex multi-step tasks.
21
- - Prefer targeted edits over full file rewrites.
22
- - For file operations, verify the file exists before modifying.
23
-
24
- ## Frontend Default Stack
25
-
26
- - React + shadcn/ui + Tailwind CSS is the default.
27
- - Use shadcn/ui components first. Custom only when shadcn doesn't cover it.
28
- - Tailwind utility classes only. No inline styles, no CSS modules.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@seanyao/roll",
3
- "version": "2026.504.1",
3
+ "version": "2026.505.2",
4
4
  "description": "Roll — Roll out features with AI agents",
5
5
  "scripts": {
6
6
  "test": "find tests/unit tests/integration -name '*.bats' | sort | xargs ./tests/helpers/bats-core/bin/bats"
@@ -21,7 +21,7 @@
21
21
  "roll": "bin/roll"
22
22
  },
23
23
  "license": "MIT",
24
- "author": "Sean Yao <seanyao@gmail.com>",
24
+ "author": "Sean Yao <sean.dlut@gmail.com>",
25
25
  "files": [
26
26
  "bin/",
27
27
  "conventions/",
@@ -2,6 +2,8 @@
2
2
  hidden: true
3
3
  name: roll-.changelog
4
4
  license: MIT
5
+ model: haiku
6
+ allowed-tools: "Read, Edit, Write, Bash(git:*)"
5
7
  description: After build completion, extracts completed Stories from BACKLOG.md to generate CHANGELOG.md. Auto-triggered after successful deploy, keeping the external changelog in sync with the internal backlog.
6
8
  ---
7
9
 
@@ -2,6 +2,7 @@
2
2
  hidden: true
3
3
  name: roll-.qa
4
4
  license: MIT
5
+ allowed-tools: "Read"
5
6
  description: QA coverage reference for build skills. Defines test pyramid (unit/E2E/visual/smoke), coverage requirements, and CI gates. Ensures quality assurance across all testing layers.
6
7
  ---
7
8
 
@@ -2,6 +2,8 @@
2
2
  hidden: true
3
3
  name: roll-.review
4
4
  license: MIT
5
+ model: sonnet
6
+ allowed-tools: "Read, Bash(git:*)"
5
7
  description: Self code review step in the TCR workflow. Runs after each micro-step is completed and before commit, checking code quality, security, and design issues.
6
8
  ---
7
9
 
@@ -1,6 +1,7 @@
1
1
  ---
2
2
  name: roll-debug
3
3
  license: MIT
4
+ allowed-tools: "Read, Edit, Write, Bash, Agent"
4
5
  description: Universal web debugger. Mounts a Black Box (BB) diagnostic probe on any page, collects rich diagnostics, analyzes root causes, and suggests fixes. Cleans up after itself.
5
6
  ---
6
7
 
@@ -1,4 +1,4 @@
1
- # Wukong Engineering Common Sense Checklist
1
+ # Roll Engineering Common Sense Checklist
2
2
 
3
3
  > **These are not best practices — they are baseline requirements.** Violations are bugs.
4
4
 
@@ -1,6 +1,8 @@
1
1
  ---
2
2
  name: roll-design
3
3
  license: MIT
4
+ model: sonnet
5
+ allowed-tools: "Read, Edit, Write, Glob, Grep, Bash(git:*), WebSearch, WebFetch, Skill"
4
6
  description: Unified entry for discussion, design and planning. Explores options when uncertain, designs solutions, splits into INVEST-compliant user stories, and writes to BACKLOG.md. Use when user wants to discuss approaches, design solutions, plan features, or create stories.
5
7
  ---
6
8
 
@@ -1,6 +1,8 @@
1
1
  ---
2
2
  name: roll-doctor
3
3
  license: MIT
4
+ model: haiku
5
+ allowed-tools: "Read, Bash, Edit"
4
6
  description: "Diagnose Roll toolchain health. Checks skill files, YAML frontmatter, symlinks, conventions sync, template integrity, and config validity."
5
7
  ---
6
8
 
@@ -1,6 +1,8 @@
1
1
  ---
2
2
  name: roll-jot
3
3
  license: MIT
4
+ model: haiku
5
+ allowed-tools: "Read, Edit"
4
6
  description: "Fast backlog capture. Analyzes a short description, classifies it as bug or idea, and appends it to BACKLOG.md with an auto-incremented ID."
5
7
  ---
6
8
 
@@ -1,6 +1,8 @@
1
1
  ---
2
2
  name: roll-notes
3
3
  license: MIT
4
+ model: haiku
5
+ allowed-tools: "Read, Edit, Write, Bash(date:*)"
4
6
  description: "Project diary skill. Records development moments — successes, failures, discoveries — appended chronologically to a daily notes file."
5
7
  ---
6
8
 
@@ -1,6 +1,8 @@
1
1
  ---
2
2
  name: roll-release
3
3
  license: MIT
4
+ model: haiku
5
+ allowed-tools: "Read, Edit, Bash(git:*), Bash(npm:*), Bash(sed:*), Bash(date:*)"
4
6
  description: "Release skill for roll maintainers. Calculates next version (YYYY.MMDD.N format, auto-increments N from today's git tags), updates VERSION in bin/roll and package.json, commits, tags, and pushes to trigger npm auto-publish via GitHub Actions. Trigger: release, publish, 发版, 发布新版本."
5
7
  ---
6
8
 
@@ -1,6 +1,8 @@
1
1
  ---
2
2
  name: roll-research
3
3
  license: MIT
4
+ model: opus
5
+ allowed-tools: "WebFetch, WebSearch, Read, Write, Bash(python3:*), Bash(curl:*), Bash(pip:*), Agent"
4
6
  description: |
5
7
  HV (Horizontal-Vertical) Analysis deep research skill for products, companies, concepts, technologies, or people. Dual-axis: vertical traces full lifecycle narrative from origin to present; horizontal compares against competitors at current time; cross-axis produces new insights. Output: professionally formatted PDF report.
6
8
  Trigger: "deep research", "research this", "competitive analysis", "help me understand", "what's the deal with", "deep dive", "HV analysis", or any request implying systematic research (not a simple lookup).
@@ -1,6 +1,7 @@
1
1
  ---
2
2
  name: roll-sentinel
3
3
  license: MIT
4
+ allowed-tools: "Read, Edit, Write, Bash, WebFetch"
4
5
  description: Smart patrol inspector for production systems. Scheduled randomized sampling checks based on BACKLOG requirements. Cost-controlled AI validation with intelligent spot-checking logic.
5
6
  ---
6
7
 
@@ -1,6 +1,8 @@
1
1
  ---
2
2
  name: roll-spar
3
3
  license: MIT
4
+ model: sonnet
5
+ allowed-tools: "Read, Edit, Write, Bash, Agent, Skill"
4
6
  description: Adversarial TDD mode with Attacker/Defender agents. Attacker writes tests to break the system, Defender writes minimal code to pass. Use for high-risk logic like auth, payments, data integrity, or complex state machines.
5
7
  ---
6
8