teamai-cli 0.26.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 +37 -2
- package/README.ja.md +10 -7
- package/README.ko.md +10 -7
- package/README.md +10 -7
- package/README.th.md +10 -7
- package/README.zh-CN.md +10 -7
- package/agents/teamai-recall.md +9 -7
- package/dist/index.js +38718 -28148
- package/package.json +2 -1
- package/skill-data/core/SKILL.md +113 -1
- package/skill-data/core/references/commands.md +21 -10
- package/skill-data/core/references/contribute-member.md +23 -3
- package/skill-data/core/references/troubleshooting.md +165 -18
- package/skill-data/setup/SKILL.md +10 -6
- package/skill-data/setup/references/join-member.md +23 -10
- package/skill-data/setup/references/manage-admin.md +78 -7
- package/skill-data/setup/references/setup-admin.md +18 -5
- package/skill-data/setup/references/uninstall.md +64 -1
package/CHANGELOG.md
CHANGED
|
@@ -6,13 +6,24 @@ All notable changes to this project will be documented in this file. See [standa
|
|
|
6
6
|
|
|
7
7
|
### ๐ฅ Breaking Changes
|
|
8
8
|
|
|
9
|
-
-
|
|
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)).
|
|
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)).
|
|
12
|
-
- Per-entry scoping of env variables, hooks and MCP servers gives way to namespace files (see Features). `projects:` on an `env/env.yaml` variable, a `hooks/hooks.yaml` hook or an `mcp/mcp.yaml` server, and `roles:` on an env variable, existed only in the 0.26.0 betas and are removed: such an entry now reaches nobody, and
|
|
13
|
+
- Per-entry scoping of env variables, hooks and MCP servers gives way to namespace files (see Features). `projects:` on an `env/env.yaml` variable, a `hooks/hooks.yaml` hook or an `mcp/mcp.yaml` server, and `roles:` on an env variable, existed only in the 0.26.0 betas and are removed: such an entry now reaches nobody, and pull, the list commands and status warn with the namespace file to move it to, one per listed id, so a project-only value never falls through to the whole team. `teamai env add` also warns when it updates an existing variable carrying either removed key, and preserves the key. `roles:` on hooks and MCP servers, which 0.25.0 shipped, is deprecated: it keeps filtering for one more minor release as 0.25.0 did, a name repeated in one file under different `roles:` included, pull warns once per run and `teamai doctor` has a check, both naming every target file. There is no automatic migration; move each entry into the file the warning names and drop the key. A member with no role in a team with `roles.yaml` received every `roles:`-scoped hook and server; once they move into `hooks/<ns>/` or `mcp/<ns>/`, that member no longer does (for [#707](https://github.com/Tencent/teamai-cli/issues/707)).
|
|
14
|
+
- Each tool reads only its own `tool_extras.<tool>` from a YAML agent. Qoder, Qoder CN, ZCode and OMP used to receive `tool_extras.claude` and ignore their own key, which `teamai push` wrote their edits to, so an edit never reached them; a team that relied on Claude extras reaching these tools moves those fields to `tool_extras.qoder`, `tool_extras.qoder-cn`, `tool_extras.zcode` or `tool_extras.omp`. tclaude and tcodex read `tool_extras.tclaude` and `tool_extras.tcodex` and fill the fields those lack from `tool_extras.claude` and `tool_extras.codex`, and `teamai push` writes their edits to their own key instead of the Claude or Codex one. The first ordinary pull after updating re-renders a copy an older CLI wrote this way when that CLI recorded delivering it and the member has not changed it since; any other copy is left as it is until the team next changes the agent (for [#830](https://github.com/Tencent/teamai-cli/issues/830)).
|
|
15
|
+
- **Upgrade every member before a team introduces model aliases.** An older CLI ignores `models/aliases.yaml` and writes `model: strong` into every tool as is, a model no tool knows, and its `teamai push` reads a model changed in a deployed copy as an edit, so it can replace `model: strong` in the team's agent with a concrete model such as `opus`. Have everyone update first, then add `models/aliases.yaml` and move agents to an alias. TeamAI does not check versions; the first ordinary pull after a member updates replaces a literal `model: strong` with the resolved model (for [#830](https://github.com/Tencent/teamai-cli/issues/830)).
|
|
13
16
|
|
|
14
17
|
### โจ Features
|
|
15
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)).
|
|
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)).
|
|
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)).
|
|
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)).
|
|
23
|
+
- `teamai push` keeps model aliases intact. For an agent whose `model` is an alias, a copy whose model and effort match what the last pull wrote or what a pull would write now is unedited, so pushing before pulling an alias change reports nothing. Push never proposes a concrete `model` over the alias and never writes the alias's effort into `tool_extras`, so adding an unrelated field no longer pins the effort. A hand-edited model or effort is reported as drift and left out, in `--dry-run` too, with where to make the change instead: the member's override file, the team's `models/aliases.yaml`, or `teamai models restore --agent <tool>` for a switched tool; the agent's other edits still push, and editing two tools no longer skips the agent over their different models. Writing an alias name in a deployed copy proposes `model: <alias>`. A new agent pushed from a tool's directory keeps its literal model. Push's warning about a kept copy whose deployed version changed now says `The version teamai would deploy at <path> ... has changed` instead of blaming the team, and for an agent it ignores a change of the model resolution alone, which push does not replace (for [#830](https://github.com/Tencent/teamai-cli/issues/830)).
|
|
24
|
+
- A broken model aliases file never changes anyone's models. A structural error in `models/aliases.yaml` or `~/.teamai/models/aliases.yaml` (YAML that does not parse, a wrong type, a bad alias name, an effort without a model, `~` in the team file, top-level keys but no `aliases:`, such as a misspelled `alias:`) makes `teamai pull` keep every agent with a `model` as deployed, deploy none of them anew and leave their recorded models alone, with a warning naming the file, and once the file is fixed an ordinary pull delivers them, including ones it never deployed and team changes that arrived meanwhile (a pull that holds an agent, on an unchanged team repo too, says so and does not count the team revision as synced, so the next one syncs in full, and sends no `pull` webhook; `teamai pull --dry-run` names the agents it would hold); `teamai push` skips those agents with the reason and pushes the rest. While it lasts, inactive-namespace cleanup leaves the root agent a held namespace agent replaces in place. A tool key teamai does not know, an option field other than `model` and `effort`, and an alias named like a tool's own model alias (`opus`, `sonnet`, `haiku`, `fable`, `inherit`, `default`, `auto`, `lite`) are dropped with a warning and the rest of the file applies; `gateways` inside an alias is ignored silently. Pull now prints an aliases warning only when it delivers an agent that uses that alias, for a tool entry only to that tool, instead of on every pull (for [#830](https://github.com/Tencent/teamai-cli/issues/830)).
|
|
25
|
+
- Model aliases can be scoped: `models/<ns>/aliases.yaml`, read where `<ns>` is active in `resources.models`, replaces the root alias of the same name whole for members with that namespace active. The same alias in two active namespaces holds agents with a `model` field, naming both files, as a structural error does. A name defined in any aliases file of the team repo, active or not, is an alias, so an agent whose alias only an inactive namespace defines gets no `model` field instead of the name written literally, and a member's local entry for it applies. Pull warns once per such alias, naming its files, and says to activate the namespace or, if the name was meant as a concrete model such as `gpt-5-codex`, to rename the alias; a structural error in any of these files holds alias agents too. Pull records which file each agent copy's model came from, and pull warnings and push drift name that file. `teamai doctor` notes an alias that agents you receive use when a namespace not active for you defines it (for [#830](https://github.com/Tencent/teamai-cli/issues/830)).
|
|
26
|
+
- `teamai doctor` shows how each agent's model alias resolved: per agent that uses an alias and per installed tool, the model and effort the tool receives and the step that decided it (`extras`, `switched`, `local`, `team`, `default`) with its source file, as notes. A member's `~`/`default` reads `tool default (chosen in <path>)`, a Codex-family model without effort says the session's effort carries over, and a line names what the last pull deployed when that differs. Every aliases entry this CLI drops is a note too. A new failing check, `Agent model aliases can be resolved`, names the reason, file and held agents while a structural error in any aliases file, a namespace conflict or an unreadable switched tool's settings holds agents; it also runs after an interactive pull. `Every team agent reaches a tool` no longer counts held agents, and `Agents delivered to <tool>` lists a copy that only carries the previous resolution as `model changed since the last pull`, which a plain `teamai pull` fixes, so it does not fail the check. Pull now names the agents it holds for one reason in a single warning and leaves them out of `Synced N agents` (for [#830](https://github.com/Tencent/teamai-cli/issues/830)).
|
|
16
27
|
- Env variables, hooks and MCP servers are scoped the way skills and agents are. `env/<ns>/env.yaml`, `hooks/<ns>/hooks.yaml` and `mcp/<ns>/mcp.yaml` reach only members whose role or directory's project lists `<ns>` under `resources.env`, `resources.hooks` or `resources.mcp`; the root files still reach everyone. A namespace entry replaces the root entry of the same variable `key`, hook `id` or server `name`, whole: an MCP override carries its own `command`, `args`, `env` and `tools:`, and one without `tools:` reaches every tool. When a namespace stops being active the next pull, `Already synced` included, restores the root entries it overrode and removes the ones only it had; `env.sh` is rewritten even when `env/env.yaml` is missing or declares nothing, and MCP `${VAR}` reads the same resolved variables. `teamai env add` and `teamai env remove` take `--role <ns>` / `--project <id>` to edit a namespace file (`--role` warns when no role or project declares the namespace; neither edits a file that does not parse, and `--project` changes nothing when the team repo cannot be refreshed), `teamai push` picks up a change to any `env/<ns>/env.yaml`, and `teamai remove mcp <name>` removes from the root file when it defines the name, otherwise from the one namespace file that does, asking for `--role` / `--project` only when several do, and removing nothing by a bare name the root file does not define while an MCP file does not parse; a flag that names a file that does not parse says so instead of reporting the name as not found. `teamai env list`, `teamai mcp list`, `teamai hooks list` and `teamai list <env|hooks|mcp> --source repo` show each entry's namespace and whether it overrides the root, and `teamai status` and `teamai doctor` count per namespace. A hooks or MCP file that cannot be resolved makes `teamai hooks inject` and `teamai mcp inject` exit 1 instead of reporting success, and hooks or model profiles that cannot be resolved fail `teamai doctor`'s `Team hooks can be resolved` or `Team model profiles can be resolved`, where `teamai status` points. A declared namespace matches its directory case-folded, as docs namespaces do, so `env/Checkout/` serves `env: [checkout]` on Linux too, and `--role` / `--project` write into that directory. So a checkout project can point `API_BASE` or a shared MCP server at its own backend under the same name (for [#707](https://github.com/Tencent/teamai-cli/issues/707)).
|
|
17
28
|
- An item in an active namespace replaces the root item of the same name for skills, agents, rules and CLAUDE.md fragments too, so contradictory versions are no longer delivered side by side. An agent in `agents/<ns>/` replaces the root agent of the same stem instead of failing the pull, and deactivating the namespace brings the root agent back; a root file of the same stem no longer withdraws a placement record. `rules/<ns>/<name>.md` replaces `rules/<name>.md`, in Hermes' `SOUL.md` block too; deeper paths replace nothing. In the rule directories shared with a member's own rules (JoyCode, OMP, Pi, Copilot), the replaced root copy is removed while it is what teamai delivered, now or at the last pull, and an edited copy is kept and named on each pull. `claudemd/<ns>/<name>.md` replaces `claudemd/<name>.md` in the managed block. A root skill received through a tag is replaced by an active namespace skill of the same name; root skills are still not delivered by default in role or project mode, and among tag matches the root skill wins over one in an inactive namespace. Installing a skill removes the files that another team version of it has and the new one lacks, when they match that version byte for byte, so switching between versions leaves nothing of the other behind, while a file you added or edited stays; one at a path another version has is named on each pull. `teamai push` writes an edit of a replacing item back to its namespace and never to the root, and the skills push scan covers project namespaces as well as role ones. `teamai recall` indexes the skills and rules you receive rather than every one in the repo, so a replaced root rule or a rule of an inactive namespace is not returned. Two namespace rules or CLAUDE.md files of one name are both delivered, since each keeps its own place. A replacement that cannot be used replaces nothing: a skill directory without `SKILL.md` is not delivered (pull names it), and while an agent file does not parse the agent it would replace stays installed. `teamai doctor` lists every replacement as a note, in `--json` under `notes`; without roles or projects nothing changes, and the notes list each name the team repo defines more than once. Keep content a project may override at the root: a namespace item never gives way, so a rule in `rules/common/` is delivered beside a project's rule of the same name (for [#707](https://github.com/Tencent/teamai-cli/issues/707)).
|
|
18
29
|
- `docs/<ns>/` can be scoped: once any role or project lists `<ns>` under `resources.docs`, those docs reach only the members who have that namespace active. A `docs/<dir>/` that no role or project lists stays shared, so existing subdirectories keep reaching everyone. When the namespace stops being active, the next pull removes the local copies that still match the team file byte for byte, now or in an earlier team commit, and keeps an edited one, naming it. The docs mirror of `sharing.docs.localDir` copies only the docs a member receives and never removes such an edited copy. `teamai recall` and `teamai doctor`'s `Team docs delivered` follow the same filter, and doctor does not report a kept copy as stale. `team-codebase` cannot be a docs namespace, since `docs/team-codebase/` is the legacy codebase output; a manifest that declares it fails to load (for [#707](https://github.com/Tencent/teamai-cli/issues/707)).
|
|
@@ -30,9 +41,33 @@ All notable changes to this project will be documented in this file. See [standa
|
|
|
30
41
|
- Data partitions auto-migrate a legacy `.teamai`, resume interrupted migrations, smoke-check the clone, and keep a git-ignored backup ([#439](https://github.com/Tencent/teamai-cli/pull/439), for [#374](https://github.com/Tencent/teamai-cli/issues/374)).
|
|
31
42
|
- Teams add their own course-correction words via `sharing.intervention.correctionKeywords` in `teamai.yaml`. The built-in list still covers only Chinese, English and Japanese, so corrections typed in other languages count only once the team configures them. The `UserPromptSubmit` hook now stores a `correction` flag on each dashboard prompt event (for [#564](https://github.com/Tencent/teamai-cli/issues/564)).
|
|
32
43
|
- `teamai init <repo> --provider <name>` uses the named provider instead of detecting one, so a member of a team on self-hosted GitLab can join with `--provider git` and their existing Git authentication, without `GITLAB_TOKEN`. The choice is saved in that machine's local config and takes precedence over the team's `teamai.yaml` `provider` for PR/MR creation and for `teamai doctor`'s provider checks; an existing `teamai.yaml` is unchanged, so other members keep the team's provider, and a `teamai.yaml` that `init` creates records the provider `init` would detect without the flag rather than `git`, and stops with a `GITLAB_URL` hint on an unconfigured self-hosted GitLab. `--provider gitlab` on a host that is not the configured `GITLAB_URL` or `TEAMAI_GITLAB_HOST` stops with a hint instead of sending the token to gitlab.com. With `git`, `teamai push` pushes the branch and leaves the merge request to be opened on the Git host, exiting non-zero as it does for a `provider: git` team repo. Re-running `init` without `--provider` returns to auto-detection. The value must be one of `tgit`, `github`, `cnb`, `gitlab`, `gitcode` or `git`, and `--provider` cannot be combined with `--http` (for [#789](https://github.com/Tencent/teamai-cli/issues/789)).
|
|
44
|
+
- Pi Coding Agent can use team model profiles, so `teamai models switch` reaches it like every other supported agent. TeamAI writes one provider into `~/.pi/agent/models.json`, keyed by the profile ref and labelled with its `name`, holding every catalog model. Pi resolves the api and the URL per model, so that one provider covers a catalog spanning all three protocols; a model served over several protocols is registered once, preferring an OpenAI one, and declaring a model such as `claude-opus-4-8` in an `anthropic`-only group pins it to Anthropic Messages. The key is the profile ref rather than the bare `id`, which is unique only within one catalog file, so a root and a namespace profile sharing an id do not overwrite one another. A key configured from the environment is written as `$VAR`, Pi's own indirection, so no secret lands in the file, and a member's other providers in the same file are never touched โ a switch over one TeamAI already wrote is not a collision, while a first switch refuses a provider the member already has under that ref. Pi's `settings.json` is left alone, so the default model stays the member's choice, as Claude's `/model` pick already is, and `PI_CODING_AGENT_DIR` is honored the way `CODEX_HOME` is. `teamai models restore` puts the file back, removing the key the last switch created even when the team has since re-pointed the profile at a different ref, and restoring without `--agent` now covers Pi too.
|
|
33
45
|
|
|
34
46
|
### ๐ Bug Fixes
|
|
35
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)).
|
|
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)).
|
|
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)).
|
|
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)).
|
|
36
71
|
- On macOS, the git commands behind pull, push, reports and learnings publishing no longer wait on a PATH search each time they run. teamai spawned `git` by name, and on macOS that lookup costs a few milliseconds for each PATH entry ahead of git's directory: 30-67 ms per call with a typical PATH, while git itself takes about 8 ms. teamai now runs the `git` that lookup would pick by its absolute path, found once and again whenever PATH changes or that `git` is gone or no longer executable, and only once a `git --version` by that path starts. On macOS 26 an up-to-date `teamai pull` drops from 1.3 s to 0.4 s with a 42-entry PATH, and from 2.0 s to 0.4 s with the PATH an npm script gives; macOS 27 no longer shows the lookup cost. Windows, a PATH with an empty or relative entry, a first `git` on PATH that does not start (a missing interpreter, no execute permission), and the few one-off git calls outside these paths (provider clone, version and user probes) keep the bare-name spawn (for [#868](https://github.com/Tencent/teamai-cli/issues/868)).
|
|
37
72
|
- On Node 24, `teamai codebase --extract`, and the `teamai import` and CI extract paths that run it, no longer abort with `Fatal process out of memory: Zone` on a repository with `.swift` files. V8's optimizing Wasm compiler (nodejs/node#63421) ran out of memory on the tree-sitter grammars, so the AST track now keeps them on V8's baseline tier on Node 24 and later. That also cuts the TypeScript grammar's peak memory there from about 1.4 GB to about 0.1 GB, for a parse about 1.6x slower; Node 20 and 22 are unchanged (for [#860](https://github.com/Tencent/teamai-cli/issues/860)).
|
|
38
73
|
- `teamai remove mcp ambiguous` removes a server named `ambiguous` from `mcp/mcp.yaml`. The name matched the value `remove` used internally to mean "refused", so the command printed `Nothing was removed.`, exited 1, and gave no reason (for [#862](https://github.com/Tencent/teamai-cli/issues/862)).
|
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"
|
|
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"
|
|
132
|
-
<tr><td>Pi Coding Agent</td><td align="center">โ</td><td align="center"
|
|
133
|
-
<tr><td>OpenClaw</td><td align="center">โ</td><td align="center"
|
|
134
|
-
<tr><td>Hermes</td><td align="center">โ</td><td align="center"
|
|
135
|
-
<tr><td>DeepSeek Harness</td><td align="center">โ</td><td align="center"
|
|
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"
|
|
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"
|
|
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"
|
|
132
|
-
<tr><td>Pi Coding Agent</td><td align="center">โ</td><td align="center"
|
|
133
|
-
<tr><td>OpenClaw</td><td align="center">โ</td><td align="center"
|
|
134
|
-
<tr><td>Hermes</td><td align="center">โ</td><td align="center"
|
|
135
|
-
<tr><td>DeepSeek Harness</td><td align="center">โ</td><td align="center"
|
|
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"
|
|
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"
|
|
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"
|
|
132
|
-
<tr><td>Pi Coding Agent</td><td align="center">โ</td><td align="center"
|
|
133
|
-
<tr><td>OpenClaw</td><td align="center">โ</td><td align="center"
|
|
134
|
-
<tr><td>Hermes</td><td align="center">โ</td><td align="center"
|
|
135
|
-
<tr><td>DeepSeek Harness</td><td align="center">โ</td><td align="center"
|
|
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"
|
|
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"
|
|
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"
|
|
132
|
-
<tr><td>Pi Coding Agent</td><td align="center">โ</td><td align="center"
|
|
133
|
-
<tr><td>OpenClaw</td><td align="center">โ</td><td align="center"
|
|
134
|
-
<tr><td>Hermes</td><td align="center">โ</td><td align="center"
|
|
135
|
-
<tr><td>DeepSeek Harness</td><td align="center">โ</td><td align="center"
|
|
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"
|
|
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"
|
|
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"
|
|
138
|
-
<tr><td>Pi Coding Agent</td><td align="center">โ</td><td align="center"
|
|
139
|
-
<tr><td>OpenClaw</td><td align="center">โ</td><td align="center"
|
|
140
|
-
<tr><td>Hermes</td><td align="center">โ</td><td align="center"
|
|
141
|
-
<tr><td>DeepSeek Harness</td><td align="center">โ</td><td align="center"
|
|
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"
|
|
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)๏ผโ ๅฎ่ฃ
ใๆๅๆฅๅ
ฅใๆฅๅธธๆต็จไธๅฝไปคๅ่
|