@hecer/yoke 1.11.0 → 1.13.0
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/.claude-plugin/plugin.json +13 -13
- package/.codex-plugin/plugin.json +7 -7
- package/CHANGELOG.md +435 -398
- package/README.md +943 -915
- package/TODOS.md +5 -5
- package/agents/docs.toml +6 -6
- package/agents/implementer.toml +6 -6
- package/agents/reviewer.toml +6 -6
- package/agents/security.toml +6 -6
- package/bench/README.md +86 -86
- package/bench/RESULTS.md +35 -35
- package/bench/output-compaction.mjs +65 -65
- package/bench/result-schema.mjs +12 -12
- package/bench/results/claude-2026-07-27T18-03-26.json +50 -50
- package/bench/results/codex-unavailable-1785175418318.json +15 -15
- package/bench/results/gemini-2026-07-27T18-03-44.json +46 -46
- package/bench/run-matrix.mjs +26 -26
- package/bench/run.mjs +106 -106
- package/canon/AGENTS.md +30 -30
- package/canon/context/DECISIONS.md +4 -4
- package/canon/context/GLOSSARY.md +11 -11
- package/canon/context/KNOWLEDGE.md +4 -4
- package/canon/context/PROJECT.md +15 -15
- package/canon/loop/loop-spec.md +65 -65
- package/canon/loop/prd.schema.md +41 -41
- package/canon/manifest.yaml +59 -59
- package/canon/policy/gates.md +7 -7
- package/canon/policy/roles.md +9 -9
- package/canon/skills/ATTRIBUTION.md +99 -99
- package/canon/skills/authoring-prd/SKILL.md +57 -57
- package/canon/skills/brainstorming/SKILL.md +164 -164
- package/canon/skills/codebase-design/DEEPENING.md +15 -15
- package/canon/skills/codebase-design/DESIGN-IT-TWICE.md +12 -12
- package/canon/skills/codebase-design/SKILL.md +39 -39
- package/canon/skills/dispatching-parallel-agents/SKILL.md +182 -182
- package/canon/skills/document-release/SKILL.md +302 -302
- package/canon/skills/domain-modeling/ADR-FORMAT.md +19 -19
- package/canon/skills/domain-modeling/CONTEXT-FORMAT.md +39 -39
- package/canon/skills/domain-modeling/SKILL.md +35 -35
- package/canon/skills/executing-plans/SKILL.md +70 -70
- package/canon/skills/finishing-a-development-branch/SKILL.md +200 -200
- package/canon/skills/health/SKILL.md +177 -177
- package/canon/skills/maintaining-context/SKILL.md +34 -34
- package/canon/skills/minimal-code/SKILL.md +21 -21
- package/canon/skills/no-ai-slop/SKILL.md +103 -103
- package/canon/skills/no-ai-slop/eval.md +43 -43
- package/canon/skills/plan-ceo-review/SKILL.md +541 -541
- package/canon/skills/plan-eng-review/SKILL.md +362 -362
- package/canon/skills/receiving-code-review/SKILL.md +213 -213
- package/canon/skills/requesting-code-review/SKILL.md +105 -105
- package/canon/skills/resolving-merge-conflicts/SKILL.md +18 -18
- package/canon/skills/retro/SKILL.md +397 -397
- package/canon/skills/review/SKILL.md +246 -246
- package/canon/skills/ship/SKILL.md +691 -691
- package/canon/skills/subagent-driven-development/SKILL.md +277 -277
- package/canon/skills/systematic-debugging/SKILL.md +296 -296
- package/canon/skills/tdd/SKILL.md +371 -371
- package/canon/skills/unslop-ui/SKILL.md +34 -34
- package/canon/skills/using-git-worktrees/SKILL.md +218 -218
- package/canon/skills/verification-before-completion/SKILL.md +139 -139
- package/canon/skills/visual-verification/SKILL.md +54 -54
- package/canon/skills/workflow/SKILL.md +22 -22
- package/canon/skills/writing-for-agents/SKILL-MECHANICS.md +27 -27
- package/canon/skills/writing-for-agents/SKILL.md +42 -42
- package/canon/skills/writing-plans/SKILL.md +152 -152
- package/canon/skills/writing-skills/SKILL.md +655 -655
- package/canon/skills/yoke-retrofit/SKILL.md +26 -26
- package/canon/skills/yoke-workflow/SKILL.md +20 -20
- package/canon/tools/codex-rtk-hook.mjs +35 -35
- package/canon/tools/gemini-rtk-hook.mjs +25 -25
- package/canon/tools/graphify.md +3 -3
- package/canon/tools/playwright-mcp.md +3 -3
- package/canon/tools/qwen-rtk-hook.mjs +25 -0
- package/canon/tools/rtk.md +7 -7
- package/canon/tools/serena.md +6 -6
- package/dist/agents/catalog.js +7 -0
- package/dist/agents/contracts.js +3 -1
- package/dist/agents/host.js +5 -1
- package/dist/agents/process-streams.js +62 -0
- package/dist/agents/process.js +43 -3
- package/dist/agents/providers.js +61 -6
- package/dist/agents/telemetry.js +133 -37
- package/dist/canon/manifest.js +2 -1
- package/dist/change/inbox.js +1 -1
- package/dist/cli.js +30 -24
- package/dist/dashboard/page.js +122 -122
- package/dist/dashboard/panels.js +91 -91
- package/dist/goals/command.js +3 -2
- package/dist/loop/claims.js +2 -1
- package/dist/loop/decision.js +3 -2
- package/dist/loop/parallel-command.js +4 -2
- package/dist/loop/prd.js +2 -1
- package/dist/loop/reporter.js +1 -0
- package/dist/loop/run-command.js +31 -10
- package/dist/prd/command.js +19 -19
- package/dist/quality/candidate-comparison.js +6 -1
- package/dist/quality/command.js +17 -2
- package/dist/quality/types.js +6 -1
- package/dist/retrofit/apply.js +95 -2
- package/dist/retrofit/config.js +9 -1
- package/dist/retrofit/detect.js +8 -0
- package/dist/retrofit/plan.js +6 -0
- package/dist/retrofit/planners/claude.js +14 -14
- package/dist/retrofit/planners/kilo.js +44 -0
- package/dist/retrofit/planners/opencode.js +44 -0
- package/dist/retrofit/planners/pi.js +24 -0
- package/dist/retrofit/planners/qwen.js +3 -3
- package/dist/retrofit/preserve.js +2 -2
- package/dist/retrofit/qwen-settings.js +17 -0
- package/dist/retrofit/skill-actions.js +4 -1
- package/dist/retrofit/tools.js +8 -0
- package/dist/review/command.js +3 -2
- package/dist/review/verdict.js +1 -1
- package/dist/routing/capability.js +2 -2
- package/dist/routing/planning.js +2 -0
- package/dist/routing/registry.js +3 -1
- package/dist/routing/router.js +7 -3
- package/dist/setup/command.js +35 -11
- package/dist/setup/model-presets.js +48 -0
- package/docs/CAPABILITY-ROUTING.md +51 -51
- package/docs/DASHBOARD-EVOLUTION.md +33 -33
- package/docs/HARNESSES.md +81 -0
- package/docs/MIGRATING-TO-1.0.md +33 -33
- package/docs/MIGRATING-TO-1.1.md +27 -27
- package/docs/MIGRATING-TO-1.4.md +70 -70
- package/docs/PRODUCT-DIRECTION-2026-09-05.md +210 -210
- package/docs/PUBLISHING.md +114 -114
- package/docs/QWEN-MODEL-SUPPORT.md +142 -0
- package/docs/VERIFIED-PROJECTS-VALIDATION.md +29 -29
- package/docs/VERIFIED-PROJECTS.md +167 -167
- package/docs/superpowers/plans/2026-06-28-baustein-e-context-layer.md +981 -981
- package/docs/superpowers/plans/2026-06-29-baustein-f-routing.md +258 -258
- package/docs/superpowers/plans/2026-06-29-baustein-g-loop-observability.md +1006 -1006
- package/docs/superpowers/plans/2026-06-29-baustein-h-loop-robustness.md +374 -374
- package/docs/superpowers/plans/2026-06-30-baustein-i-visual-design-verification.md +450 -450
- package/docs/superpowers/plans/2026-07-02-baustein-k-zero-to-100-bootstrap.md +1024 -1024
- package/docs/superpowers/plans/2026-07-02-baustein-m-flow-smoke-proofs.md +574 -574
- package/docs/superpowers/plans/2026-08-13-gauntlet-quality-loop.md +537 -537
- package/docs/superpowers/plans/2026-08-16-artifact-backed-output-compaction.md +329 -329
- package/docs/superpowers/plans/2026-09-05-verified-projects.md +83 -83
- package/docs/superpowers/specs/2026-06-28-baustein-e-context-layer-design.md +146 -146
- package/docs/superpowers/specs/2026-06-29-baustein-f-routing-design.md +106 -106
- package/docs/superpowers/specs/2026-06-29-baustein-g-loop-observability-design.md +186 -186
- package/docs/superpowers/specs/2026-06-29-baustein-h-loop-robustness-design.md +113 -113
- package/docs/superpowers/specs/2026-06-30-baustein-i-visual-design-verification-design.md +98 -98
- package/docs/superpowers/specs/2026-07-02-baustein-k-zero-to-100-bootstrap-design.md +200 -200
- package/docs/superpowers/specs/2026-07-02-baustein-m-flow-smoke-proofs-design.md +155 -155
- package/docs/superpowers/specs/2026-08-13-gauntlet-quality-loop-design.md +422 -422
- package/docs/superpowers/specs/2026-08-16-artifact-backed-output-compaction-design.md +166 -166
- package/gemini-extension.json +6 -6
- package/hooks/hooks.json +19 -19
- package/package.json +91 -87
- package/dist/dashboard/discovery.js +0 -73
- package/docs/community-outreach-2026-08-20.md +0 -85
- package/docs/launch-copy-2026-08-21.md +0 -193
package/docs/PUBLISHING.md
CHANGED
|
@@ -1,114 +1,114 @@
|
|
|
1
|
-
# Publishing channels — status & playbook
|
|
2
|
-
|
|
3
|
-
Where Yoke is published, and how each channel gets updated. (Reviewed 2026-08-20.)
|
|
4
|
-
|
|
5
|
-
## Live
|
|
6
|
-
|
|
7
|
-
| Channel | How | Update path |
|
|
8
|
-
|---|---|---|
|
|
9
|
-
| **npm** — [`@hecer/yoke`](https://www.npmjs.com/package/@hecer/yoke) | GitHub OIDC trusted publishing | every release |
|
|
10
|
-
| **GitHub** — [HECer/yoke](https://github.com/HECer/yoke) | push + tag + GitHub Release | every release |
|
|
11
|
-
| **Claude Code plugin (self-marketplace)** | `.claude-plugin/plugin.json` + `marketplace.json` in this repo; users: `/plugin marketplace add HECer/yoke` → `/plugin install yoke@yoke` | bump `version` in `plugin.json` |
|
|
12
|
-
| **Gemini CLI extension** | `gemini-extension.json` + `GEMINI-EXTENSION.md` at repo root; users: `gemini extensions install https://github.com/HECer/yoke` | bump `version` in the manifest |
|
|
13
|
-
| **Codex project skills** | `npx @hecer/yoke setup .` writes the canon to `.agents/skills/` plus native Codex config/hooks; `.codex-plugin/plugin.json` is bundled for plugin-capable hosts | every npm release |
|
|
14
|
-
|
|
15
|
-
## GitHub release (required, not just a tag)
|
|
16
|
-
|
|
17
|
-
Before the release commit, update every user-facing version and README statistic, then require the
|
|
18
|
-
same checks npm will run:
|
|
19
|
-
|
|
20
|
-
```bash
|
|
21
|
-
npm run docs:update
|
|
22
|
-
npm run docs:check
|
|
23
|
-
npm run prepublishOnly
|
|
24
|
-
```
|
|
25
|
-
|
|
26
|
-
`docs:update` synchronizes the README's package version, test count, skill count, and supported
|
|
27
|
-
agents from `package.json`, Vitest discovery, and `canon/manifest.yaml`. The version must also be
|
|
28
|
-
kept in sync in `package-lock.json`, `canon/manifest.yaml`, `.claude-plugin/plugin.json`,
|
|
29
|
-
`.codex-plugin/plugin.json`, and `gemini-extension.json`.
|
|
30
|
-
|
|
31
|
-
A pushed tag appears under **Tags**, but GitHub only shows an entry under **Releases** after a
|
|
32
|
-
release object is created. Use this idempotent check after the version commit reaches `main`:
|
|
33
|
-
|
|
34
|
-
```bash
|
|
35
|
-
set -euo pipefail
|
|
36
|
-
VERSION=1.6.2
|
|
37
|
-
TARGET=$(git rev-parse HEAD)
|
|
38
|
-
git fetch --tags origin
|
|
39
|
-
|
|
40
|
-
REMOTE=$(git ls-remote origin "refs/tags/v$VERSION^{}" | awk 'NR == 1 { print $1 }')
|
|
41
|
-
if [ -z "$REMOTE" ]; then
|
|
42
|
-
REMOTE=$(git ls-remote origin "refs/tags/v$VERSION" | awk 'NR == 1 { print $1 }')
|
|
43
|
-
fi
|
|
44
|
-
if [ -n "$REMOTE" ] && [ "$REMOTE" != "$TARGET" ]; then
|
|
45
|
-
echo "origin/v$VERSION already points at a different commit" >&2
|
|
46
|
-
exit 1
|
|
47
|
-
fi
|
|
48
|
-
|
|
49
|
-
if git rev-parse -q --verify "refs/tags/v$VERSION" >/dev/null; then
|
|
50
|
-
test "$(git rev-list -n 1 "v$VERSION")" = "$TARGET" || {
|
|
51
|
-
echo "v$VERSION already points at a different commit" >&2
|
|
52
|
-
exit 1
|
|
53
|
-
}
|
|
54
|
-
else
|
|
55
|
-
git tag "v$VERSION"
|
|
56
|
-
fi
|
|
57
|
-
git push origin "refs/tags/v$VERSION"
|
|
58
|
-
gh release view "v$VERSION" >/dev/null 2>&1 || \
|
|
59
|
-
gh release create "v$VERSION" --title "Yoke $VERSION" --generate-notes
|
|
60
|
-
```
|
|
61
|
-
|
|
62
|
-
Verify both surfaces before publishing npm: `gh release view "v$VERSION"` and
|
|
63
|
-
`npm view @hecer/yoke version`.
|
|
64
|
-
|
|
65
|
-
## npm trusted publishing
|
|
66
|
-
|
|
67
|
-
The `publish-npm.yml` workflow publishes a stable package automatically when a GitHub Release is
|
|
68
|
-
published. It checks out that exact tag, requires the tag to match the version in `package.json`,
|
|
69
|
-
reruns `prepublishOnly` through `npm publish`, and skips a version that already exists. GitHub OIDC
|
|
70
|
-
provides a short-lived publishing identity; no `NPM_TOKEN` repository secret is used. npm adds
|
|
71
|
-
provenance automatically for this public repository.
|
|
72
|
-
|
|
73
|
-
One package-owner setup step is required on npmjs.com under the `@hecer/yoke` package settings:
|
|
74
|
-
|
|
75
|
-
- Publisher: GitHub Actions
|
|
76
|
-
- Organization or user: `HECer`
|
|
77
|
-
- Repository: `yoke`
|
|
78
|
-
- Workflow filename: `publish-npm.yml`
|
|
79
|
-
- Environment: leave empty
|
|
80
|
-
- Allowed action: `npm publish`
|
|
81
|
-
|
|
82
|
-
After the trusted publisher exists, the next GitHub Release publishes automatically. To publish an
|
|
83
|
-
already-created release such as `v1.6.1`, run the **Publish npm** workflow manually and provide that
|
|
84
|
-
existing tag. The workflow refuses tags without a published GitHub Release and refuses tag/version
|
|
85
|
-
mismatches. After the first successful OIDC publish, disable traditional token publishing and revoke
|
|
86
|
-
obsolete automation tokens in npm package settings.
|
|
87
|
-
|
|
88
|
-
## Submitted / pending
|
|
89
|
-
|
|
90
|
-
| Channel | How | Status |
|
|
91
|
-
|---|---|---|
|
|
92
|
-
| **Gemini extensions gallery** (geminicli.com/extensions) | automatic daily crawl: needs `gemini-extension.json` at repo root + `gemini-cli-extension` repo topic — both done | wait for crawler |
|
|
93
|
-
| **Anthropic community plugin directory** (`claude-community`, surfaced in `/plugin > Discover`) | form at **platform.claude.com/plugins/submit** (Console account, Developer role; submit the public repo URL; `claude plugin validate` runs in their pipeline — passes locally). After approval: pinned to a commit SHA, CI auto-bumps on push, catalog syncs nightly | **needs a human login** — see below |
|
|
94
|
-
|
|
95
|
-
### Anthropic directory submission (manual step)
|
|
96
|
-
|
|
97
|
-
1. Log in at https://platform.claude.com (free Console account is enough; role Developer+).
|
|
98
|
-
2. Open https://platform.claude.com/plugins/submit
|
|
99
|
-
3. Submit the public repo: `https://github.com/HECer/yoke`
|
|
100
|
-
4. Suggested description: *"Cross-agent coding harness: one curated skill canon (TDD,
|
|
101
|
-
brainstorming → spec → plan, systematic debugging, cross-model review, design
|
|
102
|
-
verification) plus mechanical safety gates and an autonomous loop via the yoke CLI."*
|
|
103
|
-
5. Category: development. Plugin name (immutable): `yoke`.
|
|
104
|
-
|
|
105
|
-
## Worth doing later (community lists, PR/issue-based)
|
|
106
|
-
|
|
107
|
-
- **awesome-claude-code** (hesreallyhim) — issue-form only, explicitly human-submitted, no PRs.
|
|
108
|
-
- **ComposioHQ/awesome-claude-plugins** — PR per template (high merge latency).
|
|
109
|
-
- **davila7/claude-code-templates** (aitmpl.com) — PR per CONTRIBUTING.md.
|
|
110
|
-
- **Codex plugin directory** — public directory submission remains a separate channel. Codex
|
|
111
|
-
users do not need it: the npm setup path installs native project skills deterministically.
|
|
112
|
-
- Auto-crawled directories (crossaitools.com etc.) pick the repo up on their own once the
|
|
113
|
-
marketplace manifest exists.
|
|
114
|
-
- Launch channels (Product Hunt, Show HN, r/ClaudeAI, r/ClaudeCode) — deliberate, human-led.
|
|
1
|
+
# Publishing channels — status & playbook
|
|
2
|
+
|
|
3
|
+
Where Yoke is published, and how each channel gets updated. (Reviewed 2026-08-20.)
|
|
4
|
+
|
|
5
|
+
## Live
|
|
6
|
+
|
|
7
|
+
| Channel | How | Update path |
|
|
8
|
+
|---|---|---|
|
|
9
|
+
| **npm** — [`@hecer/yoke`](https://www.npmjs.com/package/@hecer/yoke) | GitHub OIDC trusted publishing | every release |
|
|
10
|
+
| **GitHub** — [HECer/yoke](https://github.com/HECer/yoke) | push + tag + GitHub Release | every release |
|
|
11
|
+
| **Claude Code plugin (self-marketplace)** | `.claude-plugin/plugin.json` + `marketplace.json` in this repo; users: `/plugin marketplace add HECer/yoke` → `/plugin install yoke@yoke` | bump `version` in `plugin.json` |
|
|
12
|
+
| **Gemini CLI extension** | `gemini-extension.json` + `GEMINI-EXTENSION.md` at repo root; users: `gemini extensions install https://github.com/HECer/yoke` | bump `version` in the manifest |
|
|
13
|
+
| **Codex project skills** | `npx @hecer/yoke setup .` writes the canon to `.agents/skills/` plus native Codex config/hooks; `.codex-plugin/plugin.json` is bundled for plugin-capable hosts | every npm release |
|
|
14
|
+
|
|
15
|
+
## GitHub release (required, not just a tag)
|
|
16
|
+
|
|
17
|
+
Before the release commit, update every user-facing version and README statistic, then require the
|
|
18
|
+
same checks npm will run:
|
|
19
|
+
|
|
20
|
+
```bash
|
|
21
|
+
npm run docs:update
|
|
22
|
+
npm run docs:check
|
|
23
|
+
npm run prepublishOnly
|
|
24
|
+
```
|
|
25
|
+
|
|
26
|
+
`docs:update` synchronizes the README's package version, test count, skill count, and supported
|
|
27
|
+
agents from `package.json`, Vitest discovery, and `canon/manifest.yaml`. The version must also be
|
|
28
|
+
kept in sync in `package-lock.json`, `canon/manifest.yaml`, `.claude-plugin/plugin.json`,
|
|
29
|
+
`.codex-plugin/plugin.json`, and `gemini-extension.json`.
|
|
30
|
+
|
|
31
|
+
A pushed tag appears under **Tags**, but GitHub only shows an entry under **Releases** after a
|
|
32
|
+
release object is created. Use this idempotent check after the version commit reaches `main`:
|
|
33
|
+
|
|
34
|
+
```bash
|
|
35
|
+
set -euo pipefail
|
|
36
|
+
VERSION=1.6.2
|
|
37
|
+
TARGET=$(git rev-parse HEAD)
|
|
38
|
+
git fetch --tags origin
|
|
39
|
+
|
|
40
|
+
REMOTE=$(git ls-remote origin "refs/tags/v$VERSION^{}" | awk 'NR == 1 { print $1 }')
|
|
41
|
+
if [ -z "$REMOTE" ]; then
|
|
42
|
+
REMOTE=$(git ls-remote origin "refs/tags/v$VERSION" | awk 'NR == 1 { print $1 }')
|
|
43
|
+
fi
|
|
44
|
+
if [ -n "$REMOTE" ] && [ "$REMOTE" != "$TARGET" ]; then
|
|
45
|
+
echo "origin/v$VERSION already points at a different commit" >&2
|
|
46
|
+
exit 1
|
|
47
|
+
fi
|
|
48
|
+
|
|
49
|
+
if git rev-parse -q --verify "refs/tags/v$VERSION" >/dev/null; then
|
|
50
|
+
test "$(git rev-list -n 1 "v$VERSION")" = "$TARGET" || {
|
|
51
|
+
echo "v$VERSION already points at a different commit" >&2
|
|
52
|
+
exit 1
|
|
53
|
+
}
|
|
54
|
+
else
|
|
55
|
+
git tag "v$VERSION"
|
|
56
|
+
fi
|
|
57
|
+
git push origin "refs/tags/v$VERSION"
|
|
58
|
+
gh release view "v$VERSION" >/dev/null 2>&1 || \
|
|
59
|
+
gh release create "v$VERSION" --title "Yoke $VERSION" --generate-notes
|
|
60
|
+
```
|
|
61
|
+
|
|
62
|
+
Verify both surfaces before publishing npm: `gh release view "v$VERSION"` and
|
|
63
|
+
`npm view @hecer/yoke version`.
|
|
64
|
+
|
|
65
|
+
## npm trusted publishing
|
|
66
|
+
|
|
67
|
+
The `publish-npm.yml` workflow publishes a stable package automatically when a GitHub Release is
|
|
68
|
+
published. It checks out that exact tag, requires the tag to match the version in `package.json`,
|
|
69
|
+
reruns `prepublishOnly` through `npm publish`, and skips a version that already exists. GitHub OIDC
|
|
70
|
+
provides a short-lived publishing identity; no `NPM_TOKEN` repository secret is used. npm adds
|
|
71
|
+
provenance automatically for this public repository.
|
|
72
|
+
|
|
73
|
+
One package-owner setup step is required on npmjs.com under the `@hecer/yoke` package settings:
|
|
74
|
+
|
|
75
|
+
- Publisher: GitHub Actions
|
|
76
|
+
- Organization or user: `HECer`
|
|
77
|
+
- Repository: `yoke`
|
|
78
|
+
- Workflow filename: `publish-npm.yml`
|
|
79
|
+
- Environment: leave empty
|
|
80
|
+
- Allowed action: `npm publish`
|
|
81
|
+
|
|
82
|
+
After the trusted publisher exists, the next GitHub Release publishes automatically. To publish an
|
|
83
|
+
already-created release such as `v1.6.1`, run the **Publish npm** workflow manually and provide that
|
|
84
|
+
existing tag. The workflow refuses tags without a published GitHub Release and refuses tag/version
|
|
85
|
+
mismatches. After the first successful OIDC publish, disable traditional token publishing and revoke
|
|
86
|
+
obsolete automation tokens in npm package settings.
|
|
87
|
+
|
|
88
|
+
## Submitted / pending
|
|
89
|
+
|
|
90
|
+
| Channel | How | Status |
|
|
91
|
+
|---|---|---|
|
|
92
|
+
| **Gemini extensions gallery** (geminicli.com/extensions) | automatic daily crawl: needs `gemini-extension.json` at repo root + `gemini-cli-extension` repo topic — both done | wait for crawler |
|
|
93
|
+
| **Anthropic community plugin directory** (`claude-community`, surfaced in `/plugin > Discover`) | form at **platform.claude.com/plugins/submit** (Console account, Developer role; submit the public repo URL; `claude plugin validate` runs in their pipeline — passes locally). After approval: pinned to a commit SHA, CI auto-bumps on push, catalog syncs nightly | **needs a human login** — see below |
|
|
94
|
+
|
|
95
|
+
### Anthropic directory submission (manual step)
|
|
96
|
+
|
|
97
|
+
1. Log in at https://platform.claude.com (free Console account is enough; role Developer+).
|
|
98
|
+
2. Open https://platform.claude.com/plugins/submit
|
|
99
|
+
3. Submit the public repo: `https://github.com/HECer/yoke`
|
|
100
|
+
4. Suggested description: *"Cross-agent coding harness: one curated skill canon (TDD,
|
|
101
|
+
brainstorming → spec → plan, systematic debugging, cross-model review, design
|
|
102
|
+
verification) plus mechanical safety gates and an autonomous loop via the yoke CLI."*
|
|
103
|
+
5. Category: development. Plugin name (immutable): `yoke`.
|
|
104
|
+
|
|
105
|
+
## Worth doing later (community lists, PR/issue-based)
|
|
106
|
+
|
|
107
|
+
- **awesome-claude-code** (hesreallyhim) — issue-form only, explicitly human-submitted, no PRs.
|
|
108
|
+
- **ComposioHQ/awesome-claude-plugins** — PR per template (high merge latency).
|
|
109
|
+
- **davila7/claude-code-templates** (aitmpl.com) — PR per CONTRIBUTING.md.
|
|
110
|
+
- **Codex plugin directory** — public directory submission remains a separate channel. Codex
|
|
111
|
+
users do not need it: the npm setup path installs native project skills deterministically.
|
|
112
|
+
- Auto-crawled directories (crossaitools.com etc.) pick the repo up on their own once the
|
|
113
|
+
marketplace manifest exists.
|
|
114
|
+
- Launch channels (Product Hunt, Show HN, r/ClaudeAI, r/ClaudeCode) — deliberate, human-led.
|
|
@@ -0,0 +1,142 @@
|
|
|
1
|
+
# Qwen Code, DeepSeek and Kimi
|
|
2
|
+
|
|
3
|
+
Validated against Qwen Code 0.23.0 on 2026-09-08. Yoke's execution provider remains
|
|
4
|
+
`qwen`: Qwen Code supplies the coding tools and connects to the selected model API.
|
|
5
|
+
DeepSeek and Kimi do not require imaginary `deepseek` or `kimi` executables.
|
|
6
|
+
|
|
7
|
+
## Setup
|
|
8
|
+
|
|
9
|
+
Install Qwen Code and configure/authenticate the account you want to use. For an
|
|
10
|
+
existing Qwen Code model configuration:
|
|
11
|
+
|
|
12
|
+
```sh
|
|
13
|
+
yoke setup . --yes --agent=qwen
|
|
14
|
+
```
|
|
15
|
+
|
|
16
|
+
The default `qwen-standard` routing worker uses Qwen Code's configured model. It
|
|
17
|
+
no longer assumes an account can access four particular Qwen API models or calls
|
|
18
|
+
the same model different intelligence tiers. Existing custom workers are kept.
|
|
19
|
+
Use `--routing-preset` to explicitly reset old generated workers; otherwise edit
|
|
20
|
+
`.yoke/config.yaml` to retain your own measured profiles. A single standard profile
|
|
21
|
+
cannot satisfy stronger prepared assessments: add suitable explicit workers before
|
|
22
|
+
running those tasks, or choose an appropriate configured routing fallback.
|
|
23
|
+
|
|
24
|
+
For the opt-in DeepSeek and/or Kimi API presets:
|
|
25
|
+
|
|
26
|
+
```sh
|
|
27
|
+
yoke setup . --yes --agent=qwen --runner=qwen --model-provider=deepseek,kimi
|
|
28
|
+
```
|
|
29
|
+
|
|
30
|
+
Provide `DEEPSEEK_API_KEY` and `MOONSHOT_API_KEY` in the environment of the Qwen
|
|
31
|
+
process. Setup stores only their **variable names**, never key values, in
|
|
32
|
+
`.qwen/settings.json`. These are separate API accounts/billing; the Kimi preset
|
|
33
|
+
uses Moonshot's platform API, not Kimi Code subscription credentials. Select only
|
|
34
|
+
providers whose credentials you have configured. Setup does not contact either API
|
|
35
|
+
or prove authentication. Commit the generated project configuration and skills
|
|
36
|
+
before using isolated Git worktrees so the worker receives them.
|
|
37
|
+
|
|
38
|
+
| Preset | Models installed | Endpoint | Key variable |
|
|
39
|
+
| --- | --- | --- | --- |
|
|
40
|
+
| `deepseek` | `deepseek-v4-flash`, `deepseek-v4-pro` | `https://api.deepseek.com/v1` | `DEEPSEEK_API_KEY` |
|
|
41
|
+
| `kimi` | `kimi-k2.6`, `kimi-k2.7-code`, `kimi-k3` | `https://api.moonshot.ai/v1` | `MOONSHOT_API_KEY` |
|
|
42
|
+
|
|
43
|
+
New API workers use `openai::MODEL` in Yoke. The adapter translates this to Qwen's
|
|
44
|
+
`--auth-type openai --model MODEL`, selecting the model's endpoint and environment
|
|
45
|
+
key together even when Qwen's default login uses another protocol. Plain model IDs
|
|
46
|
+
keep their existing behavior. The same explicit selector syntax supports `anthropic`,
|
|
47
|
+
`gemini`, `vertex-ai` and `qwen-oauth` when configured in Qwen Code; only DeepSeek and
|
|
48
|
+
Kimi have new automatic API presets.
|
|
49
|
+
|
|
50
|
+
Example runner or routing worker:
|
|
51
|
+
|
|
52
|
+
```yaml
|
|
53
|
+
runner:
|
|
54
|
+
agent: qwen
|
|
55
|
+
model: openai::kimi-k3
|
|
56
|
+
routing:
|
|
57
|
+
enabled: true
|
|
58
|
+
strategy: capability
|
|
59
|
+
maxCandidates: 3
|
|
60
|
+
workers:
|
|
61
|
+
- id: deepseek-standard
|
|
62
|
+
agent: qwen
|
|
63
|
+
model: openai::deepseek-v4-flash
|
|
64
|
+
tier: standard
|
|
65
|
+
costTier: low
|
|
66
|
+
capabilities: [implementation]
|
|
67
|
+
- id: kimi-frontier
|
|
68
|
+
agent: qwen
|
|
69
|
+
model: openai::kimi-k3
|
|
70
|
+
tier: frontier
|
|
71
|
+
costTier: high
|
|
72
|
+
capabilities: [implementation]
|
|
73
|
+
```
|
|
74
|
+
|
|
75
|
+
Setup preserves existing endpoint/key/generation settings for a matching model ID,
|
|
76
|
+
existing custom worker IDs and an existing runner unless explicitly changed. It
|
|
77
|
+
adds missing preset entries and creates backups for changed settings. Regional or
|
|
78
|
+
self-hosted endpoints can be configured directly in Qwen's `modelProviders.openai`.
|
|
79
|
+
Avoid ambiguous duplicate model IDs across endpoints when selecting with `--model`.
|
|
80
|
+
Worker tiers and cost tiers are editable starting hypotheses, not measured rankings
|
|
81
|
+
or prices. Yoke accepts up to 32 configured profiles; this does not increase the
|
|
82
|
+
parallel execution limit.
|
|
83
|
+
|
|
84
|
+
## Reasoning and permissions
|
|
85
|
+
|
|
86
|
+
Yoke does not pass a nonexistent Qwen `--effort` flag. Configure model-specific
|
|
87
|
+
reasoning in the matching Qwen `modelProviders` entry's `generationConfig` using
|
|
88
|
+
Qwen's supported parameters. Qwen Code owns streaming, tool execution and replay
|
|
89
|
+
of `reasoning_content` between tool calls. Supported thinking controls differ by
|
|
90
|
+
model and endpoint; no identical thinking levels or benchmark quality is implied.
|
|
91
|
+
|
|
92
|
+
- `safe`: `--approval-mode auto-edit --sandbox --allowed-tools run_shell_command`.
|
|
93
|
+
The explicit shell allowance enables headless test/build commands inside the
|
|
94
|
+
required Qwen sandbox. It is not a command-by-command human approval flow.
|
|
95
|
+
A working Qwen sandbox backend must be installed; Yoke never silently removes it.
|
|
96
|
+
- `read-only`: plan approval mode plus sandbox, without the shell allowance.
|
|
97
|
+
- `unsafe`: explicit `--yolo`, with no sandbox requested by Yoke.
|
|
98
|
+
- When Yoke owns worker slots, the Qwen `agent`/legacy `task`, `create_sub_session`,
|
|
99
|
+
`team_create` and `send_message` tools are excluded. This controls native
|
|
100
|
+
delegation tools, not arbitrary programs invoked from a permitted shell.
|
|
101
|
+
- `bare`, `reasoningEffort` and enabling native multi-agent execution remain
|
|
102
|
+
explicitly unsupported selections for Qwen.
|
|
103
|
+
|
|
104
|
+
The RTK hook uses native `PreToolUse` denial plus a retry instruction for simple,
|
|
105
|
+
supported commands. Qwen's documented `updatedInput` is not consumed by the
|
|
106
|
+
0.23.0 execution path, so the hook does not claim transparent argument rewriting.
|
|
107
|
+
It never executes commands or grants permission. Existing RTK commands and complex
|
|
108
|
+
shell expressions are left alone; the generated context also supplies RTK guidance.
|
|
109
|
+
RTK must be installed in the execution environment, including the sandbox.
|
|
110
|
+
Re-running setup/retrofit removes only the obsolete Yoke `BeforeTool` entry,
|
|
111
|
+
preserves unrelated hooks and backs up the original settings.
|
|
112
|
+
|
|
113
|
+
## Validation and limits
|
|
114
|
+
|
|
115
|
+
Regression tests cover native result/text/structured-result envelopes, nested
|
|
116
|
+
results, failures, cumulative token/model statistics, safe invocation and native
|
|
117
|
+
worker exclusions, manual skill policy, host/project detection, automatic review
|
|
118
|
+
selection, hook migration, all-agent configuration and idempotent API setup.
|
|
119
|
+
|
|
120
|
+
Reproduce the manual transport check after building:
|
|
121
|
+
|
|
122
|
+
```sh
|
|
123
|
+
node scripts/qwen-contract-smoke.mjs /path/to/installed/qwen-code/cli-entry.js
|
|
124
|
+
```
|
|
125
|
+
|
|
126
|
+
A manual contract smoke test used the **real Qwen Code 0.23.0 CLI** against a local
|
|
127
|
+
synthetic OpenAI-compatible SSE server. Qwen, DeepSeek and Kimi model selections
|
|
128
|
+
completed a read-file tool roundtrip, preserved reasoning content in the subsequent
|
|
129
|
+
request and returned parseable results with cumulative token usage. This local
|
|
130
|
+
transport check used explicit unsafe mode only in a scratch fixture; it does not
|
|
131
|
+
validate a real provider account, model quality, billing, rate limits, Windows or
|
|
132
|
+
a production sandbox backend. No authenticated provider benchmark was performed.
|
|
133
|
+
|
|
134
|
+
## Primary references
|
|
135
|
+
|
|
136
|
+
- [Qwen headless output and permissions](https://qwenlm.github.io/qwen-code-docs/en/users/features/headless/)
|
|
137
|
+
- [Qwen model providers and generation configuration](https://qwenlm.github.io/qwen-code-docs/en/users/configuration/model-providers/)
|
|
138
|
+
- [Qwen source](https://github.com/QwenLM/qwen-code): native output adapters,
|
|
139
|
+
`toolHookTriggers.ts`, `coreToolScheduler.ts`, configuration and provider presets.
|
|
140
|
+
- [DeepSeek API models and endpoints](https://api-docs.deepseek.com/)
|
|
141
|
+
- [DeepSeek thinking tool calls](https://api-docs.deepseek.com/guides/thinking_mode/)
|
|
142
|
+
- [Kimi API models and endpoints](https://platform.kimi.ai/docs/overview)
|
|
@@ -1,29 +1,29 @@
|
|
|
1
|
-
# Local implementation validation
|
|
2
|
-
|
|
3
|
-
This record covers the September 5, 2026 source implementation, not a published release or a competitive benchmark.
|
|
4
|
-
|
|
5
|
-
## Review and behavioral checks
|
|
6
|
-
|
|
7
|
-
Independent specification and code-quality reviews identified and drove fixes for mutable acceptance, stale goal success, lost interrupted-attempt accounting, orphaned processes, incomplete workspace identity, missing final protection gates, restart-lost routing escalation, unnecessary provider installation requirements, mixed time accounting, partial cost reporting and linked pause files.
|
|
8
|
-
|
|
9
|
-
Behavioral regressions cover protected checks, source mutation during verification, truthful unmapped requirements, goal completion from real application changes, tampered tests, bounded retries, interruption recovery, source-bound worktree continuation, routing without controller calls, persisted escalation, deterministic actions, context budgets, dependency/write-scope scheduling, unknown estimates, phase/attempt evidence, local registry and HTTP security boundaries.
|
|
10
|
-
|
|
11
|
-
Final full suite: **122 test files passed; 1,098 tests passed, 2 skipped (1,100 total)** with a 20-second test timeout on Windows. This timeout accommodates the real-Git integration tests; the earlier baseline already had a 5-second timeout that passed in isolation. TypeScript build/lint, canon validation, release-metadata check and package dry run passed. The package check explicitly confirmed the compiled CLI, check/goal/dashboard modules and Gemini RTK hook are included.
|
|
12
|
-
|
|
13
|
-
## Browser and provider limits
|
|
14
|
-
|
|
15
|
-
The local dashboard was rendered and inspected in Chrome on desktop and at 390px mobile width. HTTP tests exercise registered project reads, corrupt/missing/oversized data, hostile Host/Origin headers, token rejection and authorized pause. Browser extension click automation timed out, so a complete interactive click walkthrough is not claimed.
|
|
16
|
-
|
|
17
|
-
Provider invocation/stream/parser/hook tests are local automated tests. No authenticated cross-provider development benchmark was run. Model quality parity, price superiority, exact deadline prediction and achieved real-project token savings remain unmeasured. Native structured-output adapter support does not imply a provider-native goal API.
|
|
18
|
-
|
|
19
|
-
## Provenance
|
|
20
|
-
|
|
21
|
-
Read-only `audit-provenance` scans covered README, the new usage guide and dashboard page source. No supported C2PA structure was found; supported scans completed. README Unicode findings were emoji variation selectors, not evidence of a model watermark. No content or marks were removed.
|
|
22
|
-
|
|
23
|
-
The audit's unanswered questions remain explicit:
|
|
24
|
-
|
|
25
|
-
- Verification/trust: “No conforming verifier was supplied.” Cryptographic verification and a named signer trust chain are unknown.
|
|
26
|
-
- Metadata privacy: the text format has no supported metadata parser in this analyzer; no privacy conclusion was produced.
|
|
27
|
-
- Proprietary watermark detection: “Keyed model-level watermarks cannot be checked without the provider's key.” No authorship inference follows from absence of detected marks.
|
|
28
|
-
|
|
29
|
-
The documentation and implementation were prepared with AI assistance and reviewed/tested as described above.
|
|
1
|
+
# Local implementation validation
|
|
2
|
+
|
|
3
|
+
This record covers the September 5, 2026 source implementation, not a published release or a competitive benchmark.
|
|
4
|
+
|
|
5
|
+
## Review and behavioral checks
|
|
6
|
+
|
|
7
|
+
Independent specification and code-quality reviews identified and drove fixes for mutable acceptance, stale goal success, lost interrupted-attempt accounting, orphaned processes, incomplete workspace identity, missing final protection gates, restart-lost routing escalation, unnecessary provider installation requirements, mixed time accounting, partial cost reporting and linked pause files.
|
|
8
|
+
|
|
9
|
+
Behavioral regressions cover protected checks, source mutation during verification, truthful unmapped requirements, goal completion from real application changes, tampered tests, bounded retries, interruption recovery, source-bound worktree continuation, routing without controller calls, persisted escalation, deterministic actions, context budgets, dependency/write-scope scheduling, unknown estimates, phase/attempt evidence, local registry and HTTP security boundaries.
|
|
10
|
+
|
|
11
|
+
Final full suite: **122 test files passed; 1,098 tests passed, 2 skipped (1,100 total)** with a 20-second test timeout on Windows. This timeout accommodates the real-Git integration tests; the earlier baseline already had a 5-second timeout that passed in isolation. TypeScript build/lint, canon validation, release-metadata check and package dry run passed. The package check explicitly confirmed the compiled CLI, check/goal/dashboard modules and Gemini RTK hook are included.
|
|
12
|
+
|
|
13
|
+
## Browser and provider limits
|
|
14
|
+
|
|
15
|
+
The local dashboard was rendered and inspected in Chrome on desktop and at 390px mobile width. HTTP tests exercise registered project reads, corrupt/missing/oversized data, hostile Host/Origin headers, token rejection and authorized pause. Browser extension click automation timed out, so a complete interactive click walkthrough is not claimed.
|
|
16
|
+
|
|
17
|
+
Provider invocation/stream/parser/hook tests are local automated tests. No authenticated cross-provider development benchmark was run. Model quality parity, price superiority, exact deadline prediction and achieved real-project token savings remain unmeasured. Native structured-output adapter support does not imply a provider-native goal API.
|
|
18
|
+
|
|
19
|
+
## Provenance
|
|
20
|
+
|
|
21
|
+
Read-only `audit-provenance` scans covered README, the new usage guide and dashboard page source. No supported C2PA structure was found; supported scans completed. README Unicode findings were emoji variation selectors, not evidence of a model watermark. No content or marks were removed.
|
|
22
|
+
|
|
23
|
+
The audit's unanswered questions remain explicit:
|
|
24
|
+
|
|
25
|
+
- Verification/trust: “No conforming verifier was supplied.” Cryptographic verification and a named signer trust chain are unknown.
|
|
26
|
+
- Metadata privacy: the text format has no supported metadata parser in this analyzer; no privacy conclusion was produced.
|
|
27
|
+
- Proprietary watermark detection: “Keyed model-level watermarks cannot be checked without the provider's key.” No authorship inference follows from absence of detected marks.
|
|
28
|
+
|
|
29
|
+
The documentation and implementation were prepared with AI assistance and reviewed/tested as described above.
|