teamai-cli 0.27.0-beta.0 โ†’ 0.27.0-beta.1

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/CHANGELOG.md CHANGED
@@ -6,6 +6,7 @@ All notable changes to this project will be documented in this file. See [standa
6
6
 
7
7
  ### ๐Ÿ’ฅ Breaking Changes
8
8
 
9
+ - **Upgrade every member together: team instructions leave the shared `AGENTS.md`.** `teamai pull` no longer writes the culture, `claudemd/` and recall blocks into the project's `AGENTS.md`, `~/AGENTS.md`, `~/.agents/AGENTS.md` or another tool's file, since members with different roles resolve different `claudemd/` selections and the shared file ended up holding whoever pulled last. Each installed tool gets them in its own file or session hook: Claude Code in `.claude/rules/teamai-context.md` (project) and `~/.claude/CLAUDE.md` (user); Cursor in `teamai-context.mdc` under `.cursor/rules` and `~/.cursor/rules`; CodeBuddy and WorkBuddy in one `.codebuddy/rules/teamai-context.md`, and WorkBuddy in `~/.workbuddy/rules/teamai-context.md`; OpenCode in `.opencode/teamai-context.md` and `~/.config/opencode/teamai-context.md`, listed in its `instructions`; Oh My Pi in `~/.omp/agent/RULES.md` and, in a project, through teamai's OMP extension; Pi through teamai's Pi extension in a project; Hermes in `$HERMES_HOME/SOUL.md` and, in a project, through a Hermes plugin teamai installs and enables. Copilot keeps `.github/copilot-instructions.md`. The first pull after updating removes the blocks earlier releases left in `AGENTS.md`, `~/AGENTS.md`, `.claude/CLAUDE.md`, `.codebuddy/CODEBUDDY.md`, `.omp/AGENTS.md`, `~/.omp/agent/AGENTS.md` and a moved tool's `claudemd` from the team's `toolPaths`, keeps everything else in those files, and names each file it changes; a block with a missing or repeated marker is left with a warning. A member still on an older release writes the blocks back into the shared files, so have everyone update. Pull writes only for installed tools, rewrites nothing that is current, removes the recall block when recall is disabled, and `--dry-run` lists the files it would change. Hermes skips project instructions over 4,000 characters, which pull and `teamai doctor` report. `teamai doctor` checks that each tool can load its instructions. A team `toolPaths` entry without `rules` keeps its configured `claudemd` for Claude Code, Cursor, CodeBuddy and WorkBuddy, and an entry with only `claudemd` is still delivered to. A team rule named `teamai-context` is not delivered, since it would land on teamai's own file, and a copy an earlier release delivered is removed unless the member changed it; neither a tombstone of that rule nor a namespaced placement of it reaches teamai's file. The HTTP local agent strips the old blocks of the tools a prompt reached, probes each tool as pull does, and its project prompts reach Pi, Oh My Pi and Hermes through their extension or plugin and the Codex family through its session hooks. It acks a prompt as failed, with the reason, when it reaches no tool: a target file teamai did not write, an extension or plugin that is missing, or text over Hermes' 4,000-character section. OpenCode counts `~/.claude/CLAUDE.md` as its fallback while that file holds teamai blocks, also from an excluded Claude Code, and pull warns when nothing keeps them current. A Hermes plugin named `teamai-instructions` or an Oh My Pi `teamai-hooks.ts` that teamai did not write is left alone, and a file CodeBuddy and WorkBuddy share gets the `teamai-recall` subagent block only when both have the subagent. teamai does not change `.gitignore`, `.git/info/exclude` or the index; a team that tracks a generated file such as `.github/copilot-instructions.md` still commits one member's selection. A project uninstall keeps the global Pi, Oh My Pi and Hermes adapters and Codex's user hooks, which other installs on the machine may use, and names them; `teamai hooks remove` removes them (for [#945](https://github.com/Tencent/teamai-cli/issues/945)).
9
10
  - An env variable, hook or MCP server with a key its schema does not know, such as a misspelled `role:` or a hand-added `notes:`, is no longer delivered to anyone: the key used to be dropped silently, so a misspelled restriction shipped the entry to every member. `teamai pull`, the list commands, `teamai status` and `teamai doctor` name the file, the entry and the key. `teamai env add` also warns when it updates a variable carrying the unknown key; it, `teamai env remove` and `teamai remove mcp` keep the key when they rewrite the file. A key that a later version adds to these entries is unknown to this one too, so an entry that uses it is not delivered to a member still on this version: upgrade every member before the team uses a new entry key, as for a new `resources:` key (for [#822](https://github.com/Tencent/teamai-cli/issues/822)).
10
11
  - `manifest/projects.yaml` and `manifest/roles.yaml` now reject a resource namespace that is not a single path segment, as a project id already had to be (the id keeps its own narrower ASCII rule). A namespace becomes a directory component (`skills/<namespace>/`, `agents/<namespace>/`, `learnings/<namespace>/`), so `../evil`, `a/b`, `C:evil`, a bare `..`, any name with a trailing `.` or space โ€” which Win32 strips, making `.. ` arrive as `..` and `frontend.` as `frontend` โ€” and a Windows device name such as `CON` or `COM1` under `resources:` no longer parse; the error names the offending entry. Nothing else is rejected: a namespace that is a plain directory name still parses, non-ASCII names and names with a space included. A manifest that fails to parse now reports the offending entry on one line (`Invalid projects manifest: projects.0.resources.skills.1: ...`) instead of dumping a raw validation object. Two namespaces of one resource type that differ only by case (`frontend`, `Frontend`) are rejected too, within a manifest and between the two, since they name one directory on Windows and macOS. A manifest that ships any of these โ€” a device name, a trailing `.`, a case-only pair โ€” parsed before and fails every pull now; rename the directory and the entry together.
11
12
  - **Upgrade every member before a team declares a new axis.** `resources:` in `manifest/roles.yaml` and `manifest/projects.yaml` accepts `env`, `hooks`, `mcp`, `models` and `docs`, but teamai 0.25.0 and the 0.26.0 betas reject a `resources:` key they do not know, so a team that declares one breaks pull for every member still on those versions. From this version on, an unknown `resources:` key prints one warning naming the role or project and the key, and the scope syncs as if the key were absent; `teamai roles` and `teamai projects` keep the key when they save the manifest. `teamai roles|projects add/update --namespaces` never write the new keys, so nothing declares them until an admin does by hand (for [#707](https://github.com/Tencent/teamai-cli/issues/707)).
@@ -15,6 +16,7 @@ All notable changes to this project will be documented in this file. See [standa
15
16
 
16
17
  ### โœจ Features
17
18
 
19
+ - A tool without the `teamai-recall` subagent (Pi, Hermes, OpenClaw) now gets a recall block too, which tells the agent to run `teamai recall "<keywords>"` itself before code, debugging or design work, with the same skip conditions as the subagent block. It shares the subagent block's markers, so `recall disable`, uninstall and doctor treat both alike. Pi's README row now shows โœ“ for learnings, codebase and teamwiki (for [#945](https://github.com/Tencent/teamai-cli/issues/945)).
18
20
  - A YAML agent can set `model: strong`, `model: fast`, or an alias the team defines in an optional `models/aliases.yaml`, which maps each alias per tool to that tool's own model value and an optional effort. `teamai pull` writes the mapped model into every tool's agent file, and the effort into that tool's own field: `effort` for Claude, claude-internal, tclaude, CodeBuddy, Qoder and Qoder CN, `model_reasoning_effort` for Codex, codex-internal and tcodex, `variant` for OpenCode. Cursor receives its model string as written, so its bracket form (`claude-opus-5[effort=high]`) carries the effort; Copilot receives the first entry as one model string. Copilot, Cursor, Kiro, WorkBuddy, JoyCode, ZCode and OMP get no effort field: an effort mapped for them is dropped, and pull warns once, naming the alias and the tool. The `-internal` and `t` variants use the `claude` or `codex` entry and Qoder CN the `qoder` entry unless the alias has their own key; no other tool inherits one. A tool the alias does not map, or any tool when the team has no aliases file, gets no `model` field and runs on its default, never a literal `strong`. `tool_extras.<tool>.model` skips the alias for that tool, and an extras effort alone overrides the alias's effort. A `model` that is not a string now makes the agent fail to parse; a legacy `.md` agent whose `model` is an alias is copied as is with a warning. While `models/aliases.yaml` cannot be read, pull holds every agent that sets a `model`, since the file may define any name, and push skips them. Pull records the model each agent copy received, so an ordinary pull applies a changed resolution even when the team repo has not moved, which fixes an agent an older CLI wrote with `model: strong` as is, and delivers a copy that is missing; a copy the member edited is kept, and that pull names it with how to take the new model. Pull warns when an alias an agent resolved through is removed, also where the alias gave a tool no model field (for [#830](https://github.com/Tencent/teamai-cli/issues/830)).
19
21
  - A member overrides a team model alias on their own machine in `~/.teamai/models/aliases.yaml`, in the same `aliases:` shape. An entry replaces the team's whole entry for that tool, effort included, and `~` or `default` gives the tool no model field and no effort; only `tool_extras.<tool>.model` wins over it. Keys are `strong`, `fast` or an alias the team defines, so a member can map `strong` before the team has an aliases file, and any other name has no effect. The file applies in every scope and to every team using that alias name, and an ordinary pull applies an edit to it. While it cannot be read, pull holds the agents whose `model` is an alias, naming the file, and push skips them; since the file can make no name an alias, agents with a concrete model are delivered and pushed as usual. In the team file, `default` is written as a model value and `~` is an error. When pull keeps an edited copy whose deployed version changed, it now says `the version teamai would deploy there ... has changed since` instead of blaming the team, since the change may be the member's override (for [#830](https://github.com/Tencent/teamai-cli/issues/830)).
20
22
  - On a tool switched with `teamai models switch`, an agent whose `model` is an alias no longer sends an account model to the gateway: Claude keeps a resolved `opus`, `sonnet` or `haiku`, which the switch routes to gateway models, and drops any other model; Codex, OpenCode, CodeBuddy and WorkBuddy get no `model` field, so they use their native inheritance (for Codex, `[agents].default_subagent_model` or the parent session's model), not the profile's model. No switched tool gets an effort, the alias's or one set in `tool_extras.<tool>`, unless `tool_extras.<tool>` also pins a model. `tool_extras.<tool>.model`, a concrete `model` and a member's `~`/`default` are unchanged, and claude-internal, tclaude, codex-internal and tcodex are never treated as switched. A tool counts as switched only while its live settings path matches the recorded switch and still holds what TeamAI wrote, the checks `models restore` makes, so a stale record for another `CODEX_HOME` or `CLAUDE_CONFIG_DIR` has no effect. An ordinary pull after `models switch` or `models restore` rewrites the affected agents. While the switch records or a switched tool's settings cannot be read, pull holds alias agents in the tools concerned and says why (for [#830](https://github.com/Tencent/teamai-cli/issues/830)).
@@ -43,6 +45,26 @@ All notable changes to this project will be documented in this file. See [standa
43
45
 
44
46
  ### ๐Ÿ› Bug Fixes
45
47
 
48
+ - `teamai import --from-org --dry-run` previews the current filtered repository list in memory, instead of importing an older whitelist draft or silently skipping a fresh preview. It does not write a draft, clone repositories, take import locks or run AI enrichment (for #900, C3 organization import).
49
+ - Kiro and Qoder (and Qoder CN) now get each rule in their own rules format. Kiro ignores `paths:`, so the verbatim copy pull wrote applied every rule everywhere, and Qoder documents `paths:` only for its CLI, not for Desktop. Kiro steering files get `inclusion: fileMatch` with a `fileMatchPattern` list, or `inclusion: always`; Qoder rules get `trigger: glob` with one comma-separated `glob:` line, `{a,b}` expanded, or `trigger: always_on`. The first pull after upgrading rewrites a copy still holding what teamai delivered, even when the team repo has not moved; a copy you edited is kept and named. `teamai push` sends back only the body, and a steering or Qoder rule file with no matching team rule is the member's own: pull no longer deletes it, and push no longer offers it as a new team rule. `teamai doctor` compares each copy with the new render and its fix names the fields that tool scopes by (for [#946](https://github.com/Tencent/teamai-cli/issues/946)).
50
+ - Kiro now gets a namespaced rule as a flat steering file, `rules/fe/style.md` as `fe.style.md`, as Oh My Pi does: Kiro reads only the top level of `.kiro/steering` and `~/.kiro/steering` ([kirodotdev/Kiro#10448](https://github.com/kirodotdev/Kiro/issues/10448)), so the nested copy pull wrote was never read. `teamai push` sends an edit of the flat file back to `rules/fe/style.md`, and the flat-name collision, tombstone, `remove`, `uninstall` and `doctor` handling follows. A removed dotted root rule cannot delete a live namespaced flat copy. Push and its pre-sync require a delivery record before treating a flat-name file as a team copy. A targeted uninstall names only the edited flat copies of its target tool. The first pull after upgrading writes the flat file and removes the old nested copy unless you edited it (then it names it), even when the team repo has not moved and with no delivery record (for [#946](https://github.com/Tencent/teamai-cli/issues/946)).
51
+ - Oh My Pi now gets each rule in its own rules format, in `.omp/rules` and `~/.omp/agent/rules`. A rule copied verbatim had neither `alwaysApply` nor a `description`, so OMP dropped every one, and a namespaced rule in a subdirectory was never read, since OMP reads only the top level. An unscoped rule gets `alwaysApply: true`; a scoped one gets `globs` and a `description` (its first heading, or a line naming its globs), so OMP lists it in its rulebook; a namespaced rule is written flat, `rules/fe/style.md` as `fe.style.md`, and `teamai push` sends an edit of it back to `rules/fe/style.md`. A namespaced rule whose flat name another rule you receive has is not written, pull names both, and `doctor` fails; a file of your own with that name is never overwritten or removed, and a flat copy you edited after delivery is kept and named. The first pull after upgrading rewrites a copy still holding what teamai delivered, writes the flat copy of a namespaced rule, and removes the old nested copy unless you edited it (then it names it), even when the team repo has not moved and with no delivery record. `remove`, tombstones, `uninstall` and `doctor` follow the flat name (for [#946](https://github.com/Tencent/teamai-cli/issues/946)).
52
+ - A rule scoped with an unquoted glob such as `paths: **/*.ts` lost its scope on every render after the first in a run, so Cursor, JoyCode or doctor could see it as always on: the frontmatter parse kept a failed attempt in gray-matter's cache. A `paths:` string is now split on its top-level commas only, so `src/{a,b}/**` stays one glob for Cursor instead of becoming `src/{a, b}/**`. Copilot read `paths: **/*.ts` as no scope at all and applied the rule to every file, and the inlined rules text (Codex, ZCode, DeepSeek Harness, Pi, Hermes, OpenClaw) dropped its `Applies to files matching` line, and the knowledge search index logged `Failed to parse frontmatter` for it on every pull and indexed the frontmatter as body text; all three now parse `paths:` the same way (for [#946](https://github.com/Tencent/teamai-cli/issues/946)).
53
+ - teamai's OpenClaw hook runs. Its handler read an `event` field OpenClaw never sends and subscribed to `session:start`, which OpenClaw does not emit; its `HOOK.md` name was not valid YAML; and OpenClaw loads a workspace hook only once `openclaw.json` enables its entry, which teamai never wrote. The handler now keys on the event's `type` and `action`, runs `session-start` on `command:new`, `command:reset`, `session:auto-reset` and `gateway:startup` and `prompt-submit` on `message:received`, and passes the event's workspace as the hook's `cwd`. init, pull and `hooks inject` add `hooks.internal.entries.teamai-status-report.enabled`, unless that would narrow OpenClaw's open-ended hook discovery or you switched it off, in which case they warn and name `openclaw hooks enable teamai-status-report` (earlier versions set `hooks.internal.enabled` when `OPENCLAW_STATE_DIR` was set, so those machines see this warning until the command is run); `hooks remove` and uninstall take the entry out. The workspace and config follow `OPENCLAW_PROFILE`, `OPENCLAW_CONFIG_PATH` and `OPENCLAW_WORKSPACE_DIR` as OpenClaw does, a server-pushed `SessionStart` or `UserPromptSubmit` agent hook subscribes to the events OpenClaw emits and gets its own entry (`teamai-agent-<slug>`) so the allowlist keeps it, and `teamai doctor` fails `OpenClaw hook enabled` while the entry is missing or off (for [#946](https://github.com/Tencent/teamai-cli/issues/946)).
54
+ - A project-scope `teamai pull` no longer rewrites Hermes' global `SOUL.md` rules block, and a project with no rules no longer erases it: only a user-scope pull writes it, `doctor` checks it only in user scope, and a project-scope `uninstall` leaves it. When no user-scope config exists, a project pull removes the stale team rules block an older project pull left behind and preserves other SOUL.md content. Hermes gets no project rules; in a project `init` and `doctor` say why (for [#946](https://github.com/Tencent/teamai-cli/issues/946)).
55
+ - OpenCode loads the user-scope team rules again. The user `opencode.json` listed `rules/*.md`, which OpenCode resolves from the session's working directory, so it loaded the project's `rules/` instead. Pull now lists the absolute `~/.config/opencode/rules/*.md` plus one glob per namespace directory a rule lands in, replaces the old relative glob, and drops a namespace's glob once its rules no longer reach you, keeping a glob you added for a directory of your own; `doctor` checks every glob and flags a stale one, and `uninstall` removes them (for [#946](https://github.com/Tencent/teamai-cli/issues/946)).
56
+ - CodeBuddy and WorkBuddy now get each rule in CodeBuddy's own format: `alwaysApply: false` with `paths:` as a block list when scoped, `alwaysApply: true` when not. CodeBuddy's frontmatter parser reads lines, so the inline `paths: ["a", "b"]` of a verbatim copy reached it as globs with the brackets in them. WorkBuddy's project rules now go into `.codebuddy/rules`, which it reads, as one copy shared with CodeBuddy: removing or excluding one tool keeps it while the other is installed, and `doctor` checks it once for both. WorkBuddy's user rules stay in `~/.workbuddy/rules`. Qoder and Qoder CN, which both read a project's `.qoder/rules` in one render, share their copies the same way. A rule file in `.codebuddy/rules` with no matching team rule is the member's own: pull no longer deletes it, and push no longer offers it as a new team rule (for [#946](https://github.com/Tencent/teamai-cli/issues/946)).
57
+ - JoyCode now gets each project rule in its own `.mdc` render instead of Cursor's. JoyCode reads the frontmatter by lines, keeps the quotes Cursor's render puts around `globs` and splits the value on every comma, so a scoped rule in `.joycode/rules` matched no file. Scoped rules now get `globs:` unquoted with `{a,b}` expanded, and `alwaysApply: false`; unscoped rules keep `alwaysApply: true`. The first pull after upgrading rewrites a copy still holding what teamai delivered, even when the team repo has not moved; a copy you edited is kept and named, and while its `globs` are still quoted pull says that JoyCode applies it to no file and how to fix it. A root rule's copy that a namespace rule replaces is now removed when it still holds what an older teamai wrote there (the team `.md` for Kiro, Qoder, CodeBuddy and Oh My Pi, Cursor's render for JoyCode), instead of being kept with a warning. `teamai doctor` compares each copy with the new render (for [#946](https://github.com/Tencent/teamai-cli/issues/946)).
58
+ - `teamai pull` reclaims the rule copies earlier releases left in a project's `.workbuddy/rules`, which WorkBuddy never read, and writes them to `.codebuddy/rules`, also when the team repo has not moved. It also reclaims the team rules WorkBuddy's one-time migration copied from `~/.codebuddy/rules` into `~/.workbuddy/rules`: an unedited one is re-rendered while still delivered and removed otherwise, and an edited one is kept and named. The reclaim of old rule copies now runs on every rules sync, and its warnings say why each tool does not read the copy (for [#946](https://github.com/Tencent/teamai-cli/issues/946)).
59
+ - OpenCode loads namespaced project rules. The root `opencode.json` listed `.opencode/rules/*.md`, which matched no rule in a namespace directory. Pull now lists `.opencode/rules/**/*.md` in `.opencode/opencode.json`, beside the team instructions entry, and removes the old glob from the root `opencode.json`, leaving its other keys. The first pull after upgrading moves the globs in both scopes even when the team repo has not moved; `doctor` checks `.opencode/opencode.json`, and `uninstall` removes the glob from both files, deleting a `.opencode/opencode.json` left empty (for [#946](https://github.com/Tencent/teamai-cli/issues/946)).
60
+ - ZCode, DeepSeek Harness, OpenClaw, Pi and JoyCode get the team rules in user scope, in a file only that tool reads: a team-rules block in `~/.zcode/AGENTS.md`, `$DSH_HOME/AGENTS.md` (`~/.dsh` by default), the OpenClaw workspace `AGENTS.md` (resolved as OpenClaw's hook resolves it), `~/.pi/agent/AGENTS.md` and `~/.joycode/rules.txt`, the always-on text Codex already gets in `~/.codex/AGENTS.md`. ZCode and DeepSeek Harness got no rules before, and OpenClaw, Pi and JoyCode got copies in `.openclaw/rules`, `~/.pi/agent/rules` and `~/.joycode/rules`, which they never read. A pull, also at an unchanged team revision, removes those copies when unedited and names the edited ones, and `uninstall` removes the block and the copies. A project pull writes none of these files; OpenClaw gets no project rules, and its culture and instruction blocks now follow the resolved workspace too, so a project's `.openclaw/workspace/AGENTS.md` is no longer written. `doctor` checks the block in each tool's file, and init and doctor say why OpenClaw gets no project rules (for [#946](https://github.com/Tencent/teamai-cli/issues/946)).
61
+ - In a project, ZCode and DeepSeek Harness get the project's team rules from teamai's session-start hook, as Codex does, and Pi from teamai's Pi extension, which adds them to each run's system prompt after the team instructions. None of the three gets a user rule there, so with teamai in both scopes each rule reaches the tool once. Pi no longer gets rule copies in `.pi/rules`, which it never read: a pull, also at an unchanged team revision, removes the unedited ones and names the edited ones, and `uninstall` removes them too. `doctor` checks that ZCode's `SessionStart` hook is registered with `hooks.enabled`, that the DeepSeek Harness patch and hook config exist, and that the Pi extension is current; init and doctor say that ZCode and DeepSeek Harness drop the hook text when they compact a session, that DeepSeek Harness needs `--patch` and can miss the first request. teamai now finds DeepSeek Harness where `DSH_HOME` points (`~/.dsh` when unset) for its hook bridge and its user-scope `AGENTS.md`; skills still go to `~/.dsh/skills` (for [#946](https://github.com/Tencent/teamai-cli/issues/946)).
62
+ - `teamai doctor` no longer passes rules delivered to a directory the tool never reads. A team `toolPaths` entry replaces teamai's default for that tool whole, so one written before this release still sends rules to `.pi/rules`, `~/.pi/agent/rules`, `.openclaw/rules`, `~/.joycode/rules`, a project's `.workbuddy/rules` or `.codex/rules`; `Rules delivered to <tool>` now fails there, says why the tool does not read it and what to change in the entry (for [#946](https://github.com/Tencent/teamai-cli/issues/946)).
63
+ - When `openclaw.json` is not plain JSON (OpenClaw reads JSON5), teamai cannot tell which workspace OpenClaw uses, so a user pull no longer writes OpenClaw's team rules and instruction blocks to the default workspace. It warns with the file, the parse error and the fix, and `doctor` fails `Team rules are inlined in OpenClaw workspace AGENTS.md` with the same text (for [#946](https://github.com/Tencent/teamai-cli/issues/946)).
64
+ - A user pull now repairs Hermes' `SOUL.md` rules block also when the team repo has not moved, so a block an older release's project pull overwrote is fixed by the first pull after upgrading; `doctor` says `teamai pull` for it (for [#946](https://github.com/Tencent/teamai-cli/issues/946)).
65
+ - `teamai init` prints the Codex trust reminder when it installs hooks for the public Codex, and the reminder says that until the hooks are trusted a project's team rules do not reach Codex (for [#946](https://github.com/Tencent/teamai-cli/issues/946)).
66
+ - When no team rule reaches a member any more, pull also removes a copy an older release wrote before the tool got its own rules format (a verbatim Kiro, Qoder, CodeBuddy, WorkBuddy or Oh My Pi copy, a Cursor render in JoyCode), not only one in the current format (for [#946](https://github.com/Tencent/teamai-cli/issues/946)).
67
+ - Team rules reach Codex, `codex-internal` and `tcodex`. Pull used to copy them to `.codex/rules/<name>.md`, which Codex does not read, and `teamai doctor` reported them delivered. In user scope they now go into a team-rules block of the tool's own `AGENTS.md` (`~/.codex/AGENTS.md`), beside the culture, shared-instructions and recall blocks. In a project the session-start hook adds the project's rules and those blocks to each session, and to a spawned subagent through a new `SubagentStart` entry, with `additionalContextLimit: 0` so Codex keeps them whole; pull leaves the project `AGENTS.md`, which other tools read too, unchanged. Pull removes the `.md` copies earlier pulls left in the Codex rules directory at its recorded `toolRoots` location, including a publisher's bare local copy, keeping an edited one with a warning. Pull and uninstall keep a removed rule's legacy copy unless it matches its recorded delivery hash; a missing record proves nothing about local edits. A path-scoped rule is rendered without frontmatter after an `Applies to files matching: <globs>` line, in Hermes' `SOUL.md` too. `teamai doctor` checks the user-scope block and, in a project, both hook entries' limit. The public Codex asks once to approve the changed teamai hooks (for [#938](https://github.com/Tencent/teamai-cli/issues/938)).
46
68
  - `teamai pull` names the skills it removes because they are no longer delivered here, in one line, instead of a `debug` line calling them excluded and a summary that says `No resources to sync`. Picking a role or project, or an admin adding `manifest/projects.yaml`, takes root skills away, since the root `skills/` is then the tag catalog; the line then says that `teamai tags subscribe <tag>` brings one back. A namespace skill removed because its namespace is no longer active is named too. The usage guide and the multi-project design no longer say a member with no project still gets `common` or every root item (for [#911](https://github.com/Tencent/teamai-cli/issues/911)).
47
69
  - `teamai pull` keeps the `teamai tags subscribe <tag>` recovery line when the skill directory it removes is byte-identical to an inactive namespace copy: that copy made the namespace cleanup phase remove the directory first, and the hint was lost, because pull inferred whether a root skill had left from which phase did the removing. The hint now follows the repo โ€” it appears exactly when the team repo holds the removed skill at the root, the copy a tag delivers โ€” so a namespace-only skill removed on deactivation is still named without the hint. The usage guide no longer says a member with no role gets no skills at all, in English or Chinese: root skills still arrive through a tag (review of [#917](https://github.com/Tencent/teamai-cli/pull/917)).
48
70
  - `teamai pull` keeps a skill, rule or agent you changed since teamai delivered it instead of overwriting it, and names it: `Kept <path>: you changed it since teamai delivered it`, with a warning when the team version has changed since, which `teamai push` repeats for that copy, since the SessionStart pull is silent. Pull records the sha256 of what it writes at each path in the checkout's record, and the pre-push sync records its writes too, so a copy counts as changed only against that record; a skill counts as one copy, and files only you added do not count. The copies of other tools still update. `--force` keeps these copies, `--dry-run` prints `Would keep <path>`, and a copy of an item the team removed stays when you changed it. To take the team version, delete your copy and run `teamai pull --force`. There is no record before the first full pull on this version, or in a new worktree, so that pull overwrites as before. A file you added to a skill at a path another team version of it has is no longer named on every pull, and `teamai doctor` no longer fails a rules or agents check, or points at `teamai pull --force`, for a kept copy: it lists one as `changed by you (kept by pull)` beside any other problem (for [#822](https://github.com/Tencent/teamai-cli/issues/822)).
package/README.ja.md CHANGED
@@ -123,24 +123,27 @@ Git ใ‚’ๅŸบ็›คใซใ€3 ๅฑคใฎ่ƒฝๅŠ›ใ‚’ๆง‹็ฏ‰ใ—ใพใ™๏ผš
123
123
  </thead>
124
124
  <tbody>
125
125
  <tr><td>Claude Code</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td></tr>
126
- <tr><td>Codex</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td></tr>
126
+ <tr><td>Codex</td><td align="center">โœ“</td><td align="center">โœ“*</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td></tr>
127
127
  <tr><td>Cursor</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โ€”</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td></tr>
128
128
  <tr><td>GitHub Copilot CLI</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โ€”</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td></tr>
129
129
  <tr><td>CodeBuddy</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td></tr>
130
130
  <tr><td>WorkBuddy</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โ€”</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td></tr>
131
- <tr><td>OpenCode</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โ€”</td><td align="center">โ€”</td><td align="center">โ€”</td></tr>
132
- <tr><td>Pi Coding Agent</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โ€”</td><td align="center">โ€”</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โ€”</td><td align="center">โ€”</td><td align="center">โ€”</td><td align="center">โ€”</td><td align="center">โ€”</td><td align="center">โ€”</td></tr>
133
- <tr><td>OpenClaw</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โ€”</td><td align="center">โ€”</td><td align="center">โ€”</td><td align="center">โ€”</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โ€”</td><td align="center">โ€”</td><td align="center">โ€”</td></tr>
134
- <tr><td>Hermes</td><td align="center">โœ“</td><td align="center">โ€”</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โ€”</td><td align="center">โ€”</td><td align="center">โ€”</td><td align="center">โ€”</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โ€”</td><td align="center">โ€”</td><td align="center">โ€”</td></tr>
135
- <tr><td>DeepSeek Harness</td><td align="center">โœ“</td><td align="center">โ€”</td><td align="center">โœ“</td><td align="center">โ€”</td><td align="center">โ€”</td><td align="center">โ€”</td><td align="center">โ€”</td><td align="center">โ€”</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โ€”</td><td align="center">โ€”</td><td align="center">โ€”</td></tr>
131
+ <tr><td>OpenCode</td><td align="center">โœ“</td><td align="center">โœ“*</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โ€”</td><td align="center">โ€”</td><td align="center">โ€”</td></tr>
132
+ <tr><td>Pi Coding Agent</td><td align="center">โœ“</td><td align="center">โœ“*</td><td align="center">โœ“</td><td align="center">โ€”</td><td align="center">โ€”</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โ€”</td><td align="center">โ€”</td><td align="center">โ€”</td></tr>
133
+ <tr><td>OpenClaw</td><td align="center">โœ“</td><td align="center">โœ“*</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โ€”</td><td align="center">โ€”</td><td align="center">โ€”</td><td align="center">โ€”</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โ€”</td><td align="center">โ€”</td><td align="center">โ€”</td></tr>
134
+ <tr><td>Hermes</td><td align="center">โœ“</td><td align="center">โœ“*</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โ€”</td><td align="center">โ€”</td><td align="center">โ€”</td><td align="center">โ€”</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โ€”</td><td align="center">โ€”</td><td align="center">โ€”</td></tr>
135
+ <tr><td>DeepSeek Harness</td><td align="center">โœ“</td><td align="center">โœ“*</td><td align="center">โœ“</td><td align="center">โ€”</td><td align="center">โ€”</td><td align="center">โ€”</td><td align="center">โ€”</td><td align="center">โ€”</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โ€”</td><td align="center">โ€”</td><td align="center">โ€”</td></tr>
136
136
  <tr><td>Qoder</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โ€”</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td></tr>
137
137
  <tr><td>Qoder CN</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โ€”</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td></tr>
138
138
  <tr><td>Kiro</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โ€”</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td></tr>
139
- <tr><td>ZCode</td><td align="center">โœ“</td><td align="center">โ€”</td><td align="center">โœ“</td><td align="center">โ€”</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โ€”</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td></tr>
139
+ <tr><td>ZCode</td><td align="center">โœ“</td><td align="center">โœ“*</td><td align="center">โœ“</td><td align="center">โ€”</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โ€”</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td></tr>
140
140
  <tr><td>Oh My Pi</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โ€”</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โ€”</td><td align="center">โ€”</td><td align="center">โ€”</td></tr>
141
+ <tr><td>JoyCode</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โ€”</td><td align="center">โ€”</td><td align="center">โ€”</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โ€”</td><td align="center">โ€”</td><td align="center">โ€”</td></tr>
141
142
  </tbody>
142
143
  </table>
143
144
 
145
+ <sup>โœ“*</sup> rules ใฏใƒ„ใƒผใƒซใซๅฑŠใใพใ™ใŒๅธธใซๆœ‰ๅŠนใงใ™ใ€‚ใƒ‘ใ‚นใซใ‚ˆใ‚‹ใ‚นใ‚ณใƒผใƒ—ใฏ้ฉ็”จใ•ใ‚Œใพใ›ใ‚“๏ผˆใƒ‘ใ‚นๆŒ‡ๅฎšใฎใ‚ใ‚‹ใ‚คใƒณใƒฉใ‚คใƒณใƒซใƒผใƒซใซใฏใƒขใƒ‡ใƒซๅ‘ใ‘ใฎใƒ‘ใ‚นใฎใƒ’ใƒณใƒˆใŒไป˜ใใพใ™๏ผ‰ใ€‚
146
+
144
147
  ## ่ฉณ็ดฐๆƒ…ๅ ฑ
145
148
 
146
149
  - [Usage Guide](docs/usage-guide.md) โ€” setup, onboarding, daily workflows, and commands
package/README.ko.md CHANGED
@@ -123,24 +123,27 @@ Git์„ ๊ธฐ๋ฐ˜์œผ๋กœ ์„ธ ์ธต์˜ ์—ญ๋Ÿ‰์„ ๊ตฌ์ถ•ํ•ฉ๋‹ˆ๋‹ค:
123
123
  </thead>
124
124
  <tbody>
125
125
  <tr><td>Claude Code</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td></tr>
126
- <tr><td>Codex</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td></tr>
126
+ <tr><td>Codex</td><td align="center">โœ“</td><td align="center">โœ“*</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td></tr>
127
127
  <tr><td>Cursor</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โ€”</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td></tr>
128
128
  <tr><td>GitHub Copilot CLI</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โ€”</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td></tr>
129
129
  <tr><td>CodeBuddy</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td></tr>
130
130
  <tr><td>WorkBuddy</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โ€”</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td></tr>
131
- <tr><td>OpenCode</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โ€”</td><td align="center">โ€”</td><td align="center">โ€”</td></tr>
132
- <tr><td>Pi Coding Agent</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โ€”</td><td align="center">โ€”</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โ€”</td><td align="center">โ€”</td><td align="center">โ€”</td><td align="center">โ€”</td><td align="center">โ€”</td><td align="center">โ€”</td></tr>
133
- <tr><td>OpenClaw</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โ€”</td><td align="center">โ€”</td><td align="center">โ€”</td><td align="center">โ€”</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โ€”</td><td align="center">โ€”</td><td align="center">โ€”</td></tr>
134
- <tr><td>Hermes</td><td align="center">โœ“</td><td align="center">โ€”</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โ€”</td><td align="center">โ€”</td><td align="center">โ€”</td><td align="center">โ€”</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โ€”</td><td align="center">โ€”</td><td align="center">โ€”</td></tr>
135
- <tr><td>DeepSeek Harness</td><td align="center">โœ“</td><td align="center">โ€”</td><td align="center">โœ“</td><td align="center">โ€”</td><td align="center">โ€”</td><td align="center">โ€”</td><td align="center">โ€”</td><td align="center">โ€”</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โ€”</td><td align="center">โ€”</td><td align="center">โ€”</td></tr>
131
+ <tr><td>OpenCode</td><td align="center">โœ“</td><td align="center">โœ“*</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โ€”</td><td align="center">โ€”</td><td align="center">โ€”</td></tr>
132
+ <tr><td>Pi Coding Agent</td><td align="center">โœ“</td><td align="center">โœ“*</td><td align="center">โœ“</td><td align="center">โ€”</td><td align="center">โ€”</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โ€”</td><td align="center">โ€”</td><td align="center">โ€”</td></tr>
133
+ <tr><td>OpenClaw</td><td align="center">โœ“</td><td align="center">โœ“*</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โ€”</td><td align="center">โ€”</td><td align="center">โ€”</td><td align="center">โ€”</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โ€”</td><td align="center">โ€”</td><td align="center">โ€”</td></tr>
134
+ <tr><td>Hermes</td><td align="center">โœ“</td><td align="center">โœ“*</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โ€”</td><td align="center">โ€”</td><td align="center">โ€”</td><td align="center">โ€”</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โ€”</td><td align="center">โ€”</td><td align="center">โ€”</td></tr>
135
+ <tr><td>DeepSeek Harness</td><td align="center">โœ“</td><td align="center">โœ“*</td><td align="center">โœ“</td><td align="center">โ€”</td><td align="center">โ€”</td><td align="center">โ€”</td><td align="center">โ€”</td><td align="center">โ€”</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โ€”</td><td align="center">โ€”</td><td align="center">โ€”</td></tr>
136
136
  <tr><td>Qoder</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โ€”</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td></tr>
137
137
  <tr><td>Qoder CN</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โ€”</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td></tr>
138
138
  <tr><td>Kiro</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โ€”</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td></tr>
139
- <tr><td>ZCode</td><td align="center">โœ“</td><td align="center">โ€”</td><td align="center">โœ“</td><td align="center">โ€”</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โ€”</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td></tr>
139
+ <tr><td>ZCode</td><td align="center">โœ“</td><td align="center">โœ“*</td><td align="center">โœ“</td><td align="center">โ€”</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โ€”</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td></tr>
140
140
  <tr><td>Oh My Pi</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โ€”</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โ€”</td><td align="center">โ€”</td><td align="center">โ€”</td></tr>
141
+ <tr><td>JoyCode</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โ€”</td><td align="center">โ€”</td><td align="center">โ€”</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โ€”</td><td align="center">โ€”</td><td align="center">โ€”</td></tr>
141
142
  </tbody>
142
143
  </table>
143
144
 
145
+ <sup>โœ“*</sup> rules๊ฐ€ ๋„๊ตฌ์— ์ „๋‹ฌ๋˜์ง€๋งŒ ํ•ญ์ƒ ์ ์šฉ๋ฉ๋‹ˆ๋‹ค. ๊ฒฝ๋กœ๋ณ„๋กœ ๋ฒ”์œ„๋ฅผ ํ•œ์ •ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค(๊ฒฝ๋กœ๊ฐ€ ์ง€์ •๋œ ์ธ๋ผ์ธ ๊ทœ์น™์—๋Š” ๋ชจ๋ธ์„ ์œ„ํ•œ ๊ฒฝ๋กœ ํžŒํŠธ๊ฐ€ ํฌํ•จ๋ฉ๋‹ˆ๋‹ค).
146
+
144
147
  ## ์ž์„ธํžˆ ์•Œ์•„๋ณด๊ธฐ
145
148
 
146
149
  - [Usage Guide](docs/usage-guide.md) โ€” setup, onboarding, daily workflows, and commands
package/README.md CHANGED
@@ -123,24 +123,27 @@ Three layers of capability, built on Git:
123
123
  </thead>
124
124
  <tbody>
125
125
  <tr><td>Claude Code</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td></tr>
126
- <tr><td>Codex</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td></tr>
126
+ <tr><td>Codex</td><td align="center">โœ“</td><td align="center">โœ“*</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td></tr>
127
127
  <tr><td>Cursor</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โ€”</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td></tr>
128
128
  <tr><td>GitHub Copilot CLI</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โ€”</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td></tr>
129
129
  <tr><td>CodeBuddy</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td></tr>
130
130
  <tr><td>WorkBuddy</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โ€”</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td></tr>
131
- <tr><td>OpenCode</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โ€”</td><td align="center">โ€”</td><td align="center">โ€”</td></tr>
132
- <tr><td>Pi Coding Agent</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โ€”</td><td align="center">โ€”</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โ€”</td><td align="center">โ€”</td><td align="center">โ€”</td><td align="center">โ€”</td><td align="center">โ€”</td><td align="center">โ€”</td></tr>
133
- <tr><td>OpenClaw</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โ€”</td><td align="center">โ€”</td><td align="center">โ€”</td><td align="center">โ€”</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โ€”</td><td align="center">โ€”</td><td align="center">โ€”</td></tr>
134
- <tr><td>Hermes</td><td align="center">โœ“</td><td align="center">โ€”</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โ€”</td><td align="center">โ€”</td><td align="center">โ€”</td><td align="center">โ€”</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โ€”</td><td align="center">โ€”</td><td align="center">โ€”</td></tr>
135
- <tr><td>DeepSeek Harness</td><td align="center">โœ“</td><td align="center">โ€”</td><td align="center">โœ“</td><td align="center">โ€”</td><td align="center">โ€”</td><td align="center">โ€”</td><td align="center">โ€”</td><td align="center">โ€”</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โ€”</td><td align="center">โ€”</td><td align="center">โ€”</td></tr>
131
+ <tr><td>OpenCode</td><td align="center">โœ“</td><td align="center">โœ“*</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โ€”</td><td align="center">โ€”</td><td align="center">โ€”</td></tr>
132
+ <tr><td>Pi Coding Agent</td><td align="center">โœ“</td><td align="center">โœ“*</td><td align="center">โœ“</td><td align="center">โ€”</td><td align="center">โ€”</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โ€”</td><td align="center">โ€”</td><td align="center">โ€”</td></tr>
133
+ <tr><td>OpenClaw</td><td align="center">โœ“</td><td align="center">โœ“*</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โ€”</td><td align="center">โ€”</td><td align="center">โ€”</td><td align="center">โ€”</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โ€”</td><td align="center">โ€”</td><td align="center">โ€”</td></tr>
134
+ <tr><td>Hermes</td><td align="center">โœ“</td><td align="center">โœ“*</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โ€”</td><td align="center">โ€”</td><td align="center">โ€”</td><td align="center">โ€”</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โ€”</td><td align="center">โ€”</td><td align="center">โ€”</td></tr>
135
+ <tr><td>DeepSeek Harness</td><td align="center">โœ“</td><td align="center">โœ“*</td><td align="center">โœ“</td><td align="center">โ€”</td><td align="center">โ€”</td><td align="center">โ€”</td><td align="center">โ€”</td><td align="center">โ€”</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โ€”</td><td align="center">โ€”</td><td align="center">โ€”</td></tr>
136
136
  <tr><td>Qoder</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โ€”</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td></tr>
137
137
  <tr><td>Qoder CN</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โ€”</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td></tr>
138
138
  <tr><td>Kiro</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โ€”</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td></tr>
139
- <tr><td>ZCode</td><td align="center">โœ“</td><td align="center">โ€”</td><td align="center">โœ“</td><td align="center">โ€”</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โ€”</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td></tr>
139
+ <tr><td>ZCode</td><td align="center">โœ“</td><td align="center">โœ“*</td><td align="center">โœ“</td><td align="center">โ€”</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โ€”</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td></tr>
140
140
  <tr><td>Oh My Pi</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โ€”</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โ€”</td><td align="center">โ€”</td><td align="center">โ€”</td></tr>
141
+ <tr><td>JoyCode</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โ€”</td><td align="center">โ€”</td><td align="center">โ€”</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โ€”</td><td align="center">โ€”</td><td align="center">โ€”</td></tr>
141
142
  </tbody>
142
143
  </table>
143
144
 
145
+ <sup>โœ“*</sup> The rules reach the tool, but always on: it does not scope them by path (scoped inline rules include path hints for the model).
146
+
144
147
  ## Learn More
145
148
 
146
149
  - [Usage Guide](docs/usage-guide.md) ([ไธญๆ–‡็‰ˆ](docs/usage-guide.zh-CN.md)) โ€” setup, onboarding, daily workflows, and commands
package/README.th.md CHANGED
@@ -123,24 +123,27 @@ teamai init https://github.com/your-org/your-repo --scope user
123
123
  </thead>
124
124
  <tbody>
125
125
  <tr><td>Claude Code</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td></tr>
126
- <tr><td>Codex</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td></tr>
126
+ <tr><td>Codex</td><td align="center">โœ“</td><td align="center">โœ“*</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td></tr>
127
127
  <tr><td>Cursor</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โ€”</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td></tr>
128
128
  <tr><td>GitHub Copilot CLI</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โ€”</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td></tr>
129
129
  <tr><td>CodeBuddy</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td></tr>
130
130
  <tr><td>WorkBuddy</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โ€”</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td></tr>
131
- <tr><td>OpenCode</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โ€”</td><td align="center">โ€”</td><td align="center">โ€”</td></tr>
132
- <tr><td>Pi Coding Agent</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โ€”</td><td align="center">โ€”</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โ€”</td><td align="center">โ€”</td><td align="center">โ€”</td><td align="center">โ€”</td><td align="center">โ€”</td><td align="center">โ€”</td></tr>
133
- <tr><td>OpenClaw</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โ€”</td><td align="center">โ€”</td><td align="center">โ€”</td><td align="center">โ€”</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โ€”</td><td align="center">โ€”</td><td align="center">โ€”</td></tr>
134
- <tr><td>Hermes</td><td align="center">โœ“</td><td align="center">โ€”</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โ€”</td><td align="center">โ€”</td><td align="center">โ€”</td><td align="center">โ€”</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โ€”</td><td align="center">โ€”</td><td align="center">โ€”</td></tr>
135
- <tr><td>DeepSeek Harness</td><td align="center">โœ“</td><td align="center">โ€”</td><td align="center">โœ“</td><td align="center">โ€”</td><td align="center">โ€”</td><td align="center">โ€”</td><td align="center">โ€”</td><td align="center">โ€”</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โ€”</td><td align="center">โ€”</td><td align="center">โ€”</td></tr>
131
+ <tr><td>OpenCode</td><td align="center">โœ“</td><td align="center">โœ“*</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โ€”</td><td align="center">โ€”</td><td align="center">โ€”</td></tr>
132
+ <tr><td>Pi Coding Agent</td><td align="center">โœ“</td><td align="center">โœ“*</td><td align="center">โœ“</td><td align="center">โ€”</td><td align="center">โ€”</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โ€”</td><td align="center">โ€”</td><td align="center">โ€”</td></tr>
133
+ <tr><td>OpenClaw</td><td align="center">โœ“</td><td align="center">โœ“*</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โ€”</td><td align="center">โ€”</td><td align="center">โ€”</td><td align="center">โ€”</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โ€”</td><td align="center">โ€”</td><td align="center">โ€”</td></tr>
134
+ <tr><td>Hermes</td><td align="center">โœ“</td><td align="center">โœ“*</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โ€”</td><td align="center">โ€”</td><td align="center">โ€”</td><td align="center">โ€”</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โ€”</td><td align="center">โ€”</td><td align="center">โ€”</td></tr>
135
+ <tr><td>DeepSeek Harness</td><td align="center">โœ“</td><td align="center">โœ“*</td><td align="center">โœ“</td><td align="center">โ€”</td><td align="center">โ€”</td><td align="center">โ€”</td><td align="center">โ€”</td><td align="center">โ€”</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โ€”</td><td align="center">โ€”</td><td align="center">โ€”</td></tr>
136
136
  <tr><td>Qoder</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โ€”</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td></tr>
137
137
  <tr><td>Qoder CN</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โ€”</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td></tr>
138
138
  <tr><td>Kiro</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โ€”</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td></tr>
139
- <tr><td>ZCode</td><td align="center">โœ“</td><td align="center">โ€”</td><td align="center">โœ“</td><td align="center">โ€”</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โ€”</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td></tr>
139
+ <tr><td>ZCode</td><td align="center">โœ“</td><td align="center">โœ“*</td><td align="center">โœ“</td><td align="center">โ€”</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โ€”</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td></tr>
140
140
  <tr><td>Oh My Pi</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โ€”</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โ€”</td><td align="center">โ€”</td><td align="center">โ€”</td></tr>
141
+ <tr><td>JoyCode</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โ€”</td><td align="center">โ€”</td><td align="center">โ€”</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โ€”</td><td align="center">โ€”</td><td align="center">โ€”</td></tr>
141
142
  </tbody>
142
143
  </table>
143
144
 
145
+ <sup>โœ“*</sup> rules เธชเนˆเธ‡เธ–เธถเธ‡เน€เธ„เธฃเธทเนˆเธญเธ‡เธกเธทเธญ เนเธ•เนˆเธกเธตเธœเธฅเน€เธชเธกเธญ: เน€เธ„เธฃเธทเนˆเธญเธ‡เธกเธทเธญเน„เธกเนˆเธˆเธณเธเธฑเธ”เธ‚เธญเธšเน€เธ‚เธ•เธ•เธฒเธก path (เธเธŽเนเธšเธš inline เธ—เธตเนˆเธฃเธฐเธšเธธ path เธกเธตเธ„เธณเนเธ™เธฐเธ™เธณเธ”เน‰เธฒเธ™ path เนƒเธซเน‰เน‚เธกเน€เธ”เธฅ)
146
+
144
147
  ## เน€เธฃเธตเธขเธ™เธฃเธนเน‰เน€เธžเธดเนˆเธกเน€เธ•เธดเธก
145
148
 
146
149
  - [Usage Guide](docs/usage-guide.md) โ€” setup, onboarding, daily workflows, and commands
package/README.zh-CN.md CHANGED
@@ -129,24 +129,27 @@ teamai init https://github.com/your-org/your-repo --scope user
129
129
  </thead>
130
130
  <tbody>
131
131
  <tr><td>Claude Code</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td></tr>
132
- <tr><td>Codex</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td></tr>
132
+ <tr><td>Codex</td><td align="center">โœ“</td><td align="center">โœ“*</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td></tr>
133
133
  <tr><td>Cursor</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โ€”</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td></tr>
134
134
  <tr><td>GitHub Copilot CLI</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โ€”</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td></tr>
135
135
  <tr><td>CodeBuddy</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td></tr>
136
136
  <tr><td>WorkBuddy</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โ€”</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td></tr>
137
- <tr><td>OpenCode</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โ€”</td><td align="center">โ€”</td><td align="center">โ€”</td></tr>
138
- <tr><td>Pi Coding Agent</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โ€”</td><td align="center">โ€”</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โ€”</td><td align="center">โ€”</td><td align="center">โ€”</td><td align="center">โ€”</td><td align="center">โ€”</td><td align="center">โ€”</td></tr>
139
- <tr><td>OpenClaw</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โ€”</td><td align="center">โ€”</td><td align="center">โ€”</td><td align="center">โ€”</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โ€”</td><td align="center">โ€”</td><td align="center">โ€”</td></tr>
140
- <tr><td>Hermes</td><td align="center">โœ“</td><td align="center">โ€”</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โ€”</td><td align="center">โ€”</td><td align="center">โ€”</td><td align="center">โ€”</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โ€”</td><td align="center">โ€”</td><td align="center">โ€”</td></tr>
141
- <tr><td>DeepSeek Harness</td><td align="center">โœ“</td><td align="center">โ€”</td><td align="center">โœ“</td><td align="center">โ€”</td><td align="center">โ€”</td><td align="center">โ€”</td><td align="center">โ€”</td><td align="center">โ€”</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โ€”</td><td align="center">โ€”</td><td align="center">โ€”</td></tr>
137
+ <tr><td>OpenCode</td><td align="center">โœ“</td><td align="center">โœ“*</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โ€”</td><td align="center">โ€”</td><td align="center">โ€”</td></tr>
138
+ <tr><td>Pi Coding Agent</td><td align="center">โœ“</td><td align="center">โœ“*</td><td align="center">โœ“</td><td align="center">โ€”</td><td align="center">โ€”</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โ€”</td><td align="center">โ€”</td><td align="center">โ€”</td></tr>
139
+ <tr><td>OpenClaw</td><td align="center">โœ“</td><td align="center">โœ“*</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โ€”</td><td align="center">โ€”</td><td align="center">โ€”</td><td align="center">โ€”</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โ€”</td><td align="center">โ€”</td><td align="center">โ€”</td></tr>
140
+ <tr><td>Hermes</td><td align="center">โœ“</td><td align="center">โœ“*</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โ€”</td><td align="center">โ€”</td><td align="center">โ€”</td><td align="center">โ€”</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โ€”</td><td align="center">โ€”</td><td align="center">โ€”</td></tr>
141
+ <tr><td>DeepSeek Harness</td><td align="center">โœ“</td><td align="center">โœ“*</td><td align="center">โœ“</td><td align="center">โ€”</td><td align="center">โ€”</td><td align="center">โ€”</td><td align="center">โ€”</td><td align="center">โ€”</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โ€”</td><td align="center">โ€”</td><td align="center">โ€”</td></tr>
142
142
  <tr><td>Qoder</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โ€”</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td></tr>
143
143
  <tr><td>Qoder CN</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โ€”</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td></tr>
144
144
  <tr><td>Kiro</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โ€”</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td></tr>
145
- <tr><td>ZCode</td><td align="center">โœ“</td><td align="center">โ€”</td><td align="center">โœ“</td><td align="center">โ€”</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โ€”</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td></tr>
145
+ <tr><td>ZCode</td><td align="center">โœ“</td><td align="center">โœ“*</td><td align="center">โœ“</td><td align="center">โ€”</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โ€”</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td></tr>
146
146
  <tr><td>Oh My Pi</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โ€”</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โ€”</td><td align="center">โ€”</td><td align="center">โ€”</td></tr>
147
+ <tr><td>JoyCode</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โ€”</td><td align="center">โ€”</td><td align="center">โ€”</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โœ“</td><td align="center">โ€”</td><td align="center">โ€”</td><td align="center">โ€”</td></tr>
147
148
  </tbody>
148
149
  </table>
149
150
 
151
+ <sup>โœ“*</sup> rules ่ƒฝ้€่พพ่ฏฅๅทฅๅ…ท๏ผŒไฝ†ๅง‹็ปˆ็”Ÿๆ•ˆ๏ผšๅฎƒไธๆŒ‰่ทฏๅพ„้™ๅฎšไฝœ็”จ่Œƒๅ›ด๏ผˆๅธฆ่ทฏๅพ„่Œƒๅ›ด็š„ๅ†…่”่ง„ๅˆ™ไผšๅ‘ๆจกๅž‹ๆไพ›่ทฏๅพ„ๆ็คบ๏ผ‰ใ€‚
152
+
150
153
  ## ไบ†่งฃๆ›ดๅคš
151
154
 
152
155
  - [ไฝฟ็”จๆŒ‡ๅ—](docs/usage-guide.zh-CN.md)๏ผˆ[English](docs/usage-guide.md)๏ผ‰โ€” ๅฎ‰่ฃ…ใ€ๆˆๅ‘˜ๆŽฅๅ…ฅใ€ๆ—ฅๅธธๆต็จ‹ไธŽๅ‘ฝไปคๅ‚่€ƒ