majiayu000/agent-native
Make an out-of-session agent AgentOps-native via skills + ao CLI + CI, not hooks.
npx skills add https://github.com/majiayu000/claude-skill-registry --skill agent-native
> Quick Ref: Run a Claude/Codex loop *outside* an interactive session (Managed Agent, Agent SDK, or self-hosted sandbox) under the same AgentOps guardrails — hooklessly. Guardrails = skills + the ao CLI + CI, never ported hooks. Bundle skills into the agent definition, expose ao as a callable tool so the loop self-bootstraps + self-validates, and gate the output through the SAME CI as interactive work.
Codex (gpt-5.3-codex) has NO Managed Agents API, NO Workflow tool, NO Task subagent. It orchestrates via NTM (tmux pane swarms + agent-mail) + skills + the ao CLI + ssh to bushido. So an out-of-session Codex loop becomes AgentOps-native the same way: load the AgentOps skills, call ao session bootstrap / ao inject / ao validate directly (no MCP needed — Codex shells out), and gate outputs through CI (agent-output-validate.yml). ao does not wrap gc; a whole loop needing a mayor/refinery still routes through gc.
Load and follow the skill instructions from the sibling SKILL.md — OR read skills/agent-native/SKILL.md in the host repo for the canonical specification. Honor the Critical Constraints: this is a reframe of "port hooks", NOT a hook revival; no skill fork (load the same skills/ files); Managed Agents are NOT ZDR (no holdout/PII in the agent definition); CI is the enforcement boundary, not the optional in-loop adapter.
Take majiayu000/agent-native from the repository into ~/.claude/skills for personal
use, or into .claude/skills inside a project.
The agent identifies a skill by the name field in its header. Two skills with the
same name cannot sit side by side — one of them will be ignored.