@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 +9 -10
- package/bin/roll +52 -79
- package/conventions/global/AGENTS.md +24 -0
- package/conventions/global/CLAUDE.md +0 -41
- package/conventions/global/GEMINI.md +0 -19
- package/conventions/global/project_rules.md +0 -19
- package/package.json +2 -2
- package/skills/roll-.changelog/SKILL.md +2 -0
- package/skills/roll-.qa/SKILL.md +1 -0
- package/skills/roll-.review/SKILL.md +2 -0
- package/skills/roll-debug/SKILL.md +1 -0
- package/skills/roll-design/ENGINEERING_CHECKLIST.md +1 -1
- package/skills/roll-design/SKILL.md +2 -0
- package/skills/roll-doctor/SKILL.md +2 -0
- package/skills/roll-jot/SKILL.md +2 -0
- package/skills/roll-notes/SKILL.md +2 -0
- package/skills/roll-release/SKILL.md +2 -0
- package/skills/roll-research/SKILL.md +2 -0
- package/skills/roll-sentinel/SKILL.md +1 -0
- package/skills/roll-spar/SKILL.md +2 -0
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
|
|
67
|
-
| `roll update` |
|
|
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
|
|
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
|
-
|
|
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.
|
|
85
|
-
roll
|
|
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
|
|
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.
|
|
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} [
|
|
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} [
|
|
186
|
+
echo -e " ${BOLD}Overwrite?${NC} [Y/n] "
|
|
187
187
|
read -r answer2
|
|
188
|
-
[[ "$answer2" =~ ^[
|
|
188
|
+
[[ "$answer2" =~ ^[Nn]$ ]] && { info "Skipped: ${dst/#$HOME/\~} 已跳过: ${dst/#$HOME/\~}"; return; }
|
|
189
189
|
;;
|
|
190
|
-
|
|
191
|
-
*)
|
|
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
|
|
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:
|
|
519
|
-
#
|
|
520
|
-
#
|
|
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
|
-
|
|
523
|
-
|
|
524
|
-
|
|
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
|
-
|
|
560
|
+
info "Re-syncing to AI tools... 正在重新同步到 AI 工具..."
|
|
544
561
|
echo ""
|
|
545
|
-
|
|
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
|
|
1226
|
-
echo " update [Upgrade]
|
|
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 #
|
|
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
|
-
|
|
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.
|
|
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 <
|
|
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
|
|
package/skills/roll-.qa/SKILL.md
CHANGED
|
@@ -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,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
|
|
package/skills/roll-jot/SKILL.md
CHANGED
|
@@ -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
|
|