auriga-cli 1.29.2 → 1.30.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/README.md +1 -2
- package/README.zh-CN.md +1 -2
- package/dist/catalog.json +2 -6
- package/dist/plugins.js +25 -43
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -113,7 +113,6 @@ Installs selected skills via `npx skills add`, targeting both Claude Code and Co
|
|
|
113
113
|
| codex-agent | [Ben2pc/g-claude-code-plugins](https://github.com/Ben2pc/g-claude-code-plugins) | Delegate to Codex sessions for cross-model coverage |
|
|
114
114
|
| deprecation-and-migration | [addyosmani/agent-skills](https://github.com/addyosmani/agent-skills) | Sunset, replace, or migrate legacy code — deprecation discipline |
|
|
115
115
|
| design-taste-frontend | [Leonxlnx/taste-skill](https://github.com/Leonxlnx/taste-skill) | Senior UI/UX engineer with metric-based design rules and strict component architecture |
|
|
116
|
-
| documentation-and-adrs | [addyosmani/agent-skills](https://github.com/addyosmani/agent-skills) | Record architectural decisions and the *why* — context for future engineers / agents |
|
|
117
116
|
| frontend-design | [anthropics/skills](https://github.com/anthropics/skills) | Distinctive, production-grade frontend UI generation that avoids generic AI aesthetics |
|
|
118
117
|
| make-interfaces-feel-better | [jakubkrehel/make-interfaces-feel-better](https://github.com/jakubkrehel/make-interfaces-feel-better) | Polish principles — animations, surfaces, typography, performance |
|
|
119
118
|
|
|
@@ -137,7 +136,7 @@ npx -y auriga-cli install plugins --agent codex --plugin session-instructions-lo
|
|
|
137
136
|
| claude-md-management | Claude Code / Codex | Audit and improve AGENTS.md / CLAUDE.md |
|
|
138
137
|
| playground | Claude Code / Codex | Build interactive HTML playgrounds |
|
|
139
138
|
| codex | Claude Code | Codex cross-model collaboration |
|
|
140
|
-
| auriga-workflow | Claude Code / Codex | The auriga workflow plugin — workflow skills plus the git lifecycle hooks that enforce them. Skills: `incremental-impl`, `test-designer`, `spec-design`, `arch-design`, `code-simplify`, `session-compound`, `goalify` (plans an autonomous goal and dispatches it via the built-in `/goal` command), `deep-review` (multi-dimensional PR review orchestrator — parallel per-dimension reviewers synthesized into an actionable punch list), `reviewer-creator` (scaffolds project-level custom reviewers under `docs/rules/review/`),
|
|
139
|
+
| auriga-workflow | Claude Code / Codex | The auriga workflow plugin — workflow skills plus the git lifecycle hooks that enforce them. Skills: `incremental-impl`, `test-designer`, `spec-design`, `arch-design`, `code-simplify`, `session-compound`, `goalify` (plans an autonomous goal and dispatches it via the built-in `/goal` command), `deep-review` (multi-dimensional PR review orchestrator — parallel per-dimension reviewers synthesized into an actionable punch list), `reviewer-creator` (scaffolds project-level custom reviewers under `docs/rules/review/`), `git-workflow` (git lifecycle skill), and `documentation-and-adrs` (architecture decision records and project documentation discipline — ADRs archived under `docs/architecture/`). Hooks: `commit-reminder` (PostToolUse on file edits — `Edit` / `Write` / `MultiEdit` in Claude Code, `apply_patch` in Codex — nudges to commit at the next semantic boundary when uncommitted diff vs `HEAD` exceeds 200 lines or 8 files), `pr-create-guard` (PostToolUse on `gh pr create` → injects a PR-body snapshot for five-element self-verification and flags non-Conventional-Commits titles), `pr-ready-guard` (PreToolUse on `gh pr ready` and non-draft `gh pr create` → blocks on stray planning docs, unfinalized active specs under `docs/specs/`, or unpushed commits), and `pr-merge-guard` (PreToolUse on `gh pr merge` → blocks while the PR body's Acceptance criteria section still has unchecked checklist items). The two PostToolUse hooks reach full Claude Code / Codex parity; Codex currently fails open on `pr-ready-guard`'s PreToolUse `additionalContext` informational path (block path identical). Installed by default through the plugin path. |
|
|
141
140
|
| auriga-notify *(opt-in)* | Claude Code | macOS native notification plugin for Claude Code `Notification` events. Focus-aware sound-only mode, click-to-activate, per-project notification grouping, and migrated `config.json` / `icon.png` support. Not installed by `install --all`; install explicitly with `install plugins --plugin auriga-notify`. |
|
|
142
141
|
| session-instructions-loader | Codex | Codex-only SessionStart plugin that injects ancestor `AGENTS.md` files plus repo-configured extra instruction files. |
|
|
143
142
|
|
package/README.zh-CN.md
CHANGED
|
@@ -113,7 +113,6 @@ npx auriga-cli
|
|
|
113
113
|
| codex-agent | [Ben2pc/g-claude-code-plugins](https://github.com/Ben2pc/g-claude-code-plugins) | 委派给 Codex 会话,做跨模型覆盖 |
|
|
114
114
|
| deprecation-and-migration | [addyosmani/agent-skills](https://github.com/addyosmani/agent-skills) | 废弃与迁移流程 —— 安全地下线、替换或迁移遗留代码 |
|
|
115
115
|
| design-taste-frontend | [Leonxlnx/taste-skill](https://github.com/Leonxlnx/taste-skill) | 高阶 UI/UX 工程师 —— 度量化设计规则与严格的组件架构约束 |
|
|
116
|
-
| documentation-and-adrs | [addyosmani/agent-skills](https://github.com/addyosmani/agent-skills) | 记录架构决策与"为什么" —— 为后来的工程师和 Agent 沉淀上下文 |
|
|
117
116
|
| frontend-design | [anthropics/skills](https://github.com/anthropics/skills) | 生成有辨识度、production 级的前端界面,避开常见 AI 同质化美学 |
|
|
118
117
|
| make-interfaces-feel-better | [jakubkrehel/make-interfaces-feel-better](https://github.com/jakubkrehel/make-interfaces-feel-better) | 界面打磨原则 —— 动画、表面、排版、性能 |
|
|
119
118
|
|
|
@@ -137,7 +136,7 @@ npx -y auriga-cli install plugins --agent codex --plugin session-instructions-lo
|
|
|
137
136
|
| claude-md-management | Claude Code / Codex | 审计和改进 AGENTS.md / CLAUDE.md |
|
|
138
137
|
| playground | Claude Code / Codex | 构建交互式 HTML playground |
|
|
139
138
|
| codex | Claude Code | Codex 跨模型协作 |
|
|
140
|
-
| auriga-workflow | Claude Code / Codex | auriga 工作流插件 —— 工作流 skill 加上强制执行工作流的 git 生命周期 hook。Skills:`incremental-impl`、`test-designer`、`spec-design`、`arch-design`、`code-simplify`、`session-compound`、`goalify`(plan 出自驱 goal 并通过内置 `/goal` 命令分发执行)、`deep-review`(多维度 PR review 编排器——并行派发各维度 reviewer,汇总成可执行的 punch list)、`reviewer-creator`(在 `docs/rules/review/` 下生成项目级自定义 reviewer)、`git-workflow`(git 生命周期 skill
|
|
139
|
+
| auriga-workflow | Claude Code / Codex | auriga 工作流插件 —— 工作流 skill 加上强制执行工作流的 git 生命周期 hook。Skills:`incremental-impl`、`test-designer`、`spec-design`、`arch-design`、`code-simplify`、`session-compound`、`goalify`(plan 出自驱 goal 并通过内置 `/goal` 命令分发执行)、`deep-review`(多维度 PR review 编排器——并行派发各维度 reviewer,汇总成可执行的 punch list)、`reviewer-creator`(在 `docs/rules/review/` 下生成项目级自定义 reviewer)、`git-workflow`(git 生命周期 skill)、`documentation-and-adrs`(架构决策记录与项目文档规范,ADR 归档到 `docs/architecture/`)。Hooks:`commit-reminder`(文件编辑的 PostToolUse —— Claude Code 匹配 `Edit` / `Write` / `MultiEdit`,Codex 匹配 `apply_patch` —— 未提交 diff 对比 `HEAD` 超过 200 行或 8 个文件时,提醒在下一个语义边界 commit)、`pr-create-guard`(`gh pr create` 的 PostToolUse —— 注入 PR body 快照供五要素自检,并对不符合 Conventional Commits 的标题提示)、`pr-ready-guard`(`gh pr ready` 与非 draft `gh pr create` 的 PreToolUse —— 拦截游离规划文档、`docs/specs/` 内未结案的活跃 spec、未 push commits)、`pr-merge-guard`(`gh pr merge` 的 PreToolUse —— PR body 的验收标准章节仍有未勾选清单项时拦截合并)。两个 PostToolUse hook 在 Claude Code / Codex 上完全对齐;Codex 仅对 `pr-ready-guard` 的 PreToolUse `additionalContext` 信息路径 fail-open(block 路径两边一致)。默认通过插件路径安装。 |
|
|
141
140
|
| auriga-notify *(opt-in)* | Claude Code | Claude Code `Notification` 事件的 macOS 原生通知插件。支持焦点感知仅提示音、点击唤起终端、按项目分组通知,并迁移旧 `config.json` / `icon.png`。不随 `install --all` 默认安装,需要显式执行 `install plugins --plugin auriga-notify`。 |
|
|
142
141
|
| session-instructions-loader | Codex | Codex-only SessionStart 插件,注入上层目录的 `AGENTS.md` 和仓库配置的额外 instruction 文件。 |
|
|
143
142
|
|
package/dist/catalog.json
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
{
|
|
2
|
-
"generatedAt": "2026-05-
|
|
2
|
+
"generatedAt": "2026-05-19T08:10:18.388Z",
|
|
3
3
|
"workflowSkills": [
|
|
4
4
|
{
|
|
5
5
|
"name": "planning-with-files",
|
|
@@ -39,10 +39,6 @@
|
|
|
39
39
|
"name": "design-taste-frontend",
|
|
40
40
|
"description": "Senior UI/UX Engineer. Architect digital interfaces overriding default LLM biases. Enforces metric-based rules, strict component architecture, CSS hardware acceleration, and balanced design engineering."
|
|
41
41
|
},
|
|
42
|
-
{
|
|
43
|
-
"name": "documentation-and-adrs",
|
|
44
|
-
"description": "Records decisions and documentation. Use when making architectural decisions, changing public APIs, shipping features, or when you need to record context that future engineers and agents will need to understand the codebase."
|
|
45
|
-
},
|
|
46
42
|
{
|
|
47
43
|
"name": "frontend-design",
|
|
48
44
|
"description": "Create distinctive, production-grade frontend interfaces with high design quality. Use this skill when the user asks to build web components, pages, artifacts, posters, or applications (examples include websites, landing pages, dashboards, React components, HTML/CSS layouts, or when styling/beautifying any web UI). Generates creative, polished code and UI design that avoids generic AI aesthetics."
|
|
@@ -55,7 +51,7 @@
|
|
|
55
51
|
"plugins": [
|
|
56
52
|
{
|
|
57
53
|
"name": "auriga-workflow",
|
|
58
|
-
"description": "(Claude/Codex) The auriga workflow plugin: workflow skills — incremental-impl (implementation slicing), test-designer (independent test design), spec-design (requirement clarification), arch-design (architecture design), code-simplify (code simplification), session-compound (session compounding), goalify (autonomous /goal planning), deep-review (multi-dimensional PR review orchestrator), reviewer-creator (custom reviewer scaffolding), git-workflow (git lifecycle skill) — plus the git lifecycle hooks that enforce them: commit-reminder, pr-create-guard, pr-ready-guard, pr-merge-guard. Dual-Agent compatible (Claude Code + Codex).",
|
|
54
|
+
"description": "(Claude/Codex) The auriga workflow plugin: workflow skills — incremental-impl (implementation slicing), test-designer (independent test design), spec-design (requirement clarification), arch-design (architecture design), code-simplify (code simplification), session-compound (session compounding), goalify (autonomous /goal planning), deep-review (multi-dimensional PR review orchestrator), reviewer-creator (custom reviewer scaffolding), git-workflow (git lifecycle skill), documentation-and-adrs (architecture decision records and documentation discipline) — plus the git lifecycle hooks that enforce them: commit-reminder, pr-create-guard, pr-ready-guard, pr-merge-guard. Dual-Agent compatible (Claude Code + Codex).",
|
|
59
55
|
"agents": [
|
|
60
56
|
"claude",
|
|
61
57
|
"codex"
|
package/dist/plugins.js
CHANGED
|
@@ -3,7 +3,7 @@ import os from "node:os";
|
|
|
3
3
|
import path from "node:path";
|
|
4
4
|
import { checkbox, select } from "@inquirer/prompts";
|
|
5
5
|
import { parse as parseToml } from "smol-toml";
|
|
6
|
-
import {
|
|
6
|
+
import { validateCodexMarketplace, } from "./codex-plugin-config.js";
|
|
7
7
|
import { validateMarketplaceField } from "./marketplace.js";
|
|
8
8
|
import { atomicWriteFile, exec, execAsync, log, withEsc } from "./utils.js";
|
|
9
9
|
// Plugin names and plugin-package names end up in `claude plugins ...`
|
|
@@ -467,12 +467,15 @@ function codexSupportsPluginAdd() {
|
|
|
467
467
|
}
|
|
468
468
|
}
|
|
469
469
|
// `--enable plugins` turns on the global Codex plugins feature; `--enable
|
|
470
|
-
// plugin_hooks`
|
|
471
|
-
// feature
|
|
472
|
-
//
|
|
473
|
-
//
|
|
474
|
-
//
|
|
475
|
-
//
|
|
470
|
+
// plugin_hooks` turns on the global plugin-hooks feature. Both are plain
|
|
471
|
+
// Codex feature toggles (`-c features.<name>=true`), not per-plugin state —
|
|
472
|
+
// `plugin_hooks` is appended for first-party plugins, which ship hooks, and
|
|
473
|
+
// is harmless for any that don't (the feature simply has no hooks to run).
|
|
474
|
+
// We do not inspect plugin payload to decide this: Codex owns plugin
|
|
475
|
+
// content via `codex plugin add`, and the published CLI never fetches the
|
|
476
|
+
// payload anyway. The plugin key (`<name>@<marketplace>`) is validated
|
|
477
|
+
// upstream (PLUGIN_NAME_RE / MARKETPLACE_NAME_RE), so no shell
|
|
478
|
+
// metacharacter can reach this interpolated command.
|
|
476
479
|
function codexPluginAddCommand(pluginKey, hasHooks) {
|
|
477
480
|
const enable = hasHooks
|
|
478
481
|
? "--enable plugins --enable plugin_hooks"
|
|
@@ -524,16 +527,6 @@ function readCodexMarketplaceSource(marketplaceName) {
|
|
|
524
527
|
function isCodexMarketplaceDifferentSource(error) {
|
|
525
528
|
return /already added from a different source/i.test(commandErrorText(error));
|
|
526
529
|
}
|
|
527
|
-
function pluginHasHooks(packageRoot, plugin) {
|
|
528
|
-
const relativeManifestPath = codexManifestPath(plugin);
|
|
529
|
-
if (!relativeManifestPath)
|
|
530
|
-
return false;
|
|
531
|
-
const manifestPath = path.join(packageRoot, relativeManifestPath);
|
|
532
|
-
if (!fs.existsSync(manifestPath))
|
|
533
|
-
return false;
|
|
534
|
-
const manifest = JSON.parse(fs.readFileSync(manifestPath, "utf-8"));
|
|
535
|
-
return typeof manifest.hooks === "string" || Array.isArray(manifest.hooks);
|
|
536
|
-
}
|
|
537
530
|
function resolveSelectedCodexMarketplacePlugins(localMarketplace, localSelected) {
|
|
538
531
|
const localMpByName = new Map(localMarketplace.plugins.map((p) => [p.name, p]));
|
|
539
532
|
return localSelected.map((p) => {
|
|
@@ -544,17 +537,6 @@ function resolveSelectedCodexMarketplacePlugins(localMarketplace, localSelected)
|
|
|
544
537
|
return plugin;
|
|
545
538
|
});
|
|
546
539
|
}
|
|
547
|
-
function ensureCodexPluginManifests(packageRoot, plugins) {
|
|
548
|
-
for (const plugin of plugins) {
|
|
549
|
-
const manifestPath = codexManifestPath(plugin);
|
|
550
|
-
if (!manifestPath) {
|
|
551
|
-
throw new Error(`Codex marketplace.json: plugin ${plugin.name} must use a local source.path`);
|
|
552
|
-
}
|
|
553
|
-
if (fs.existsSync(path.join(packageRoot, manifestPath)))
|
|
554
|
-
continue;
|
|
555
|
-
throw new Error(`Codex plugin ${plugin.name} manifest missing at ${manifestPath}`);
|
|
556
|
-
}
|
|
557
|
-
}
|
|
558
540
|
async function addCodexMarketplaceWithRetry(marketplaceName, addCommand, expectedSource, opts, marketplaceExecOpts, failures) {
|
|
559
541
|
const registeredSource = readCodexMarketplaceSource(marketplaceName);
|
|
560
542
|
if (registeredSource !== null) {
|
|
@@ -599,20 +581,22 @@ async function addCodexMarketplaceWithRetry(marketplaceName, addCommand, expecte
|
|
|
599
581
|
}
|
|
600
582
|
}
|
|
601
583
|
// Builds the `codex plugin add` work list: one entry per selected plugin.
|
|
602
|
-
// Local plugins
|
|
603
|
-
//
|
|
604
|
-
//
|
|
605
|
-
//
|
|
606
|
-
//
|
|
607
|
-
//
|
|
608
|
-
|
|
584
|
+
// Local (first-party) plugins always enable `plugin_hooks` — they ship
|
|
585
|
+
// hooks, and the flag is a harmless global toggle for any that don't. We
|
|
586
|
+
// deliberately do not inspect plugin payload to decide this: Codex owns
|
|
587
|
+
// plugin content via `codex plugin add`, and the published CLI never
|
|
588
|
+
// fetches the payload. External plugins emit a key straight from
|
|
589
|
+
// extra_plugin_configs.json (Codex CLI fetches the upstream manifest
|
|
590
|
+
// itself) and never set `hasHooks` — acceptable while no external plugin
|
|
591
|
+
// ships hooks; once one does, add an explicit flag to the extra config entry.
|
|
592
|
+
function composeCodexPluginAdds(localMarketplace, selectedMarketplacePlugins, externalSelected) {
|
|
609
593
|
const adds = [];
|
|
610
594
|
if (localMarketplace) {
|
|
611
595
|
for (const plugin of selectedMarketplacePlugins) {
|
|
612
596
|
adds.push({
|
|
613
597
|
key: `${plugin.name}@${localMarketplace.name}`,
|
|
614
598
|
name: plugin.name,
|
|
615
|
-
hasHooks:
|
|
599
|
+
hasHooks: true,
|
|
616
600
|
});
|
|
617
601
|
}
|
|
618
602
|
}
|
|
@@ -708,16 +692,14 @@ async function installCodexPlugins(packageRoot, opts) {
|
|
|
708
692
|
await addCodexMarketplaceWithRetry(mp.name, codexExternalMarketplaceAddCommand(mp.source), codexExternalMarketplaceSource(mp.source), opts, marketplaceExecOpts, failures);
|
|
709
693
|
}
|
|
710
694
|
if (failures.length === 0) {
|
|
711
|
-
//
|
|
712
|
-
//
|
|
713
|
-
//
|
|
714
|
-
//
|
|
715
|
-
// marketplace snapshot registered above — no manual cache copy.
|
|
695
|
+
// The plugin payload is materialized by `codex plugin add` from the
|
|
696
|
+
// marketplace snapshot registered above — no manual cache copy, and no
|
|
697
|
+
// local manifest inspection. A plugin missing from the snapshot surfaces
|
|
698
|
+
// as a `codex plugin add` failure, already caught and aggregated below.
|
|
716
699
|
const selectedMarketplacePlugins = localMarketplace
|
|
717
700
|
? resolveSelectedCodexMarketplacePlugins(localMarketplace, localSelected)
|
|
718
701
|
: [];
|
|
719
|
-
|
|
720
|
-
const pluginAdds = composeCodexPluginAdds(packageRoot, localMarketplace, selectedMarketplacePlugins, externalSelected);
|
|
702
|
+
const pluginAdds = composeCodexPluginAdds(localMarketplace, selectedMarketplacePlugins, externalSelected);
|
|
721
703
|
for (const entry of pluginAdds) {
|
|
722
704
|
try {
|
|
723
705
|
exec(codexPluginAddCommand(entry.key, entry.hasHooks), marketplaceExecOpts);
|