This repo's own hosting, issue tracking, and pull requests move from Gitea to OneDev (ADR-0029), keeping the Gitea repo as a read-only archive rather than deleting it. plugins/gitea is unaffected — it continues to ship as a marketplace product regardless of what this repo hosts itself on. Records the full execution plan (prerequisites, mirror/issue/PR/release phases, verification checklist) and updates CONTEXT.md's Issue entry and AGENTS.md's source-of-truth line to name OneDev instead of Gitea. ADR: 0029 Refs: ADR-0007 Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01GGCPJBXPLJP5FprL4C8nu3
5.8 KiB
Working in this repo
The global AI development configuration repository — the authoritative source for agent definitions, skills, workflows, and prompts across all projects.
This file carries only what applies to every session. Setup, prerequisites, and test commands are in README.md; the reasoning behind each enforcement gate is in docs/spec/gates.md.
Structure
plugins/<name>/.apm/is the only authoring source for plugin content..claude/skills/and.claude/agents/are gitignoredapm installoutput — never edit them.providers/claude-code/is the Claude Code adapter, deployed to~/.claude/byscripts/install.sh.
Repo layout table: README.md. Deployment mechanics and plugin boundaries: docs/spec/architecture.md.
Prefer plugin skills over raw shell
This repo dogfoods its own plugins. Before shelling out, check whether a skill already owns the operation — it usually does:
- Commits, branches, history, worktrees, remotes →
git-commits,git-branches,git-history,git-worktrees,git-remotes - Pre-commit hook install/config/troubleshooting →
pc-run/pc-author - Issues, PRs, labels, milestones →
gitea-issues,gitea-prs,gitea-labels-milestones; alsogitea-branches,gitea-files,gitea-releases, orgitea-workflowwhen the domain is ambiguous - Vale prose linting →
vale-config/vale-run - This repo's own AGENTS.md →
agentsmd-author/agentsmd-audit
Use the bare, unnamespaced names. That is what apm install deploys and the only form this repo's own install produces — a project skill has no plugin to prefix (ADR-0018). Whether the <plugin>: form (gitea:gitea-prs) also resolves depends on native plugin installs at user scope, outside this repo; write the bare name either way.
Fall back to raw shell only when no skill covers it.
Session rules
- Do not add repo-owned keys to
.claude/settings.json. apm treats it as its own deployed artifact andapm audit --cireplays the install and diffs, so anything apm would not have written is permanent drift that fails theapm-audit-cipre-push hook. A hook you want here is authored inplugins/<name>/.apm/hooks/and deployed by apm, never hand-written into that file. TheSessionStartentry already in it is exactly that: kyberforge authors it inplugins/kyberforge/.apm/hooks/hooks.jsonand apm merges it in, so it is apm's own output, it is what the replay expects, and it belongs in the commit — do not strip it (ADR-0019). Machine-specific settings go in the gitignored.claude/settings.local.json; shared enforcement goes in.pre-commit-config.yaml. apm.lock.yamlturning up modified is expected, not a bug. kyberforge'sSessionStarthook keeps the install current on launch and rewrites the lock in the process (ADR-0019). Onmain, commit or discard it deliberately. On a feature branch, discard it (git checkout -- apm.lock.yaml, thenapm install). This keeps unrelated lock churn out of the branch diff and keepsapm pack --check-cleanconsistent with the committed lock. The session then runs the oldermainthat the lock records, which is accepted on a branch, and the next session start refreshes again.- A
.apm/edit is not live until it is on the remote'smain. The six dependencies resolve from the holocron remote, unpinned against the default branch, so pushing a feature branch does not deploy it (ADR-0019).apm installdeploys from the lock;apm updateis what re-resolves refs. - No pre-push hook needs the network — once
apm installhas run. Rootapm.yml's marketplace has no remote package entries, so every hook resolves locally. The guarantee is a property of a populatedapm_modules/, not of the hook set: on a fresh cloneapm-audit-ci'sdeployed-files-presentfails outright, and itsdriftandconfig-consistencyinstall-replays have no cache to replay from and clone from the remote. Runapm installonce on a new checkout and the offline guarantee holds from then on (docs/spec/gates.md, "Pushing without a network"). - This repo and OneDev are the only source of truth. All project state, decisions, and working conventions live here. Do not use an external memory system for this project — cached state diverges from the repo and you get a split brain. Before answering any design or architecture question, check
docs/adr/for an existing decision.
Key documents
Read CONTEXT.md at the start of every session — it is this repo's domain glossary, and the terms it defines are used unglossed everywhere else. It is not exhaustive: terms it does not carry are defined at their point of use, mostly in docs/spec/.
Read these on demand:
README.md— prerequisites, install, and test commandsdocs/VISION.md— the phased roadmap and where this is going; read when a decision turns on product directionLESSONS.md— patterns that went wrong once; read before repeating a class of change that has burned the repo beforedocs/spec/gates.md— what each pre-commit and pre-push hook enforces and why; read when a gate fails or before changing hook configdocs/spec/architecture.md— directory structure, install pipeline, provider modeldocs/adr/— architectural decisions; read before answering design questions or proposing structural changescore/ai-constitution.md— full governance evidence base; read when a governance decision needs justificationdocs/research/ai-coding-factory/ai-coding-factory-principles.md— factory design rationale; read when implementing, auditing, or reviewing skills or factory structuredocs/notes/factory-integration-decisions.md— decisions from the factory integration grill; read when making skill authoring or factory design decisions- Governance rules are always in effect —
core/instructions/governance.md(agent rules);docs/research/governance_principles/CONTROLS.md