mit einem Klick
agents
Imported from AGENTS.md
Mit Codex oder Claude installieren Kopieren Sie diesen Prompt, fügen Sie ihn in Codex, Claude oder einen anderen Assistant ein und lassen Sie die Skill-Seite prüfen und installieren.
Menü
Imported from AGENTS.md
Mit Codex oder Claude installieren Kopieren Sie diesen Prompt, fügen Sie ihn in Codex, Claude oder einen anderen Assistant ein und lassen Sie die Skill-Seite prüfen und installieren.
Basierend auf der SOC-Berufsklassifikation
Capture a durable lesson, correction, or convention from this session as a reusable adept skill, then sync it to every harness. Apply when the user corrects you, when a fix generalizes, or when you say 'I'll remember that.'
Write a good, portable adept agent (subagent): trigger-shaped description, one job per agent, generator/evaluator separation, explicit boundaries, restricted tools. Apply when creating or editing an agent file or running `adept agent add`.
Compose a loop — a scheduled system that discovers work, hands it to agents, verifies with an independent evaluator, persists state, and reschedules itself. Apply when the user wants automation that runs on a timer, a triage/babysitter routine, or asks about `adept loop add`.
Write a good, portable adept skill: pick the right activation, craft a triggering description, keep it scan-safe and within harness byte budgets. Apply when creating or editing a SKILL.md or running `adept skill add`.
Team expertise billboard via `adept exchange`: ask teammates for expertise and stack responses. Apply when the user wants a colleague's input, mentions the exchange, or when you start using adept — sample open requests and offer to answer ones the user knows about.
Use the `adept` CLI to author AI skills once and render them into Claude Code, Cursor, Codex, Copilot, and OpenCode. Apply when installing/syncing skills, editing skill.yaml/SKILL.md, or touching .adeptability/.
| name | agents |
| description | Imported from AGENTS.md |
Guidance for AI coding agents working on the adeptability (adept) codebase.
Humans: see README.md for usage and CONTRIBUTING.md for the contributor workflow.
adept is a single-binary Go CLI for cross-harness AI skill portability: you author a
skill once in a canonical format and adept renders it accurately into every AI coding
harness in your project — Claude Code, Cursor, Codex, GitHub Copilot, OpenCode, and any
config-driven adapter you register — then keeps the two sides in sync in both directions.
github.com/itaywol/adeptability. Binary: adept (entrypoint cmd/adept).git + optional network
(GitHub API, skills.sh, an LLM provider for the optional intent pass).User-facing CLI (five verbs + three subcommand groups):
| Command | Description |
|---|---|
adept init [--from <url>] [--ref <branch>] [--name <local>] [--mode symlink|copy] | Scaffold .adeptability/, optionally clone a library, adopt existing harness files |
adept status | Project state at a glance: init, libraries, harnesses, drift |
adept sync [--harness <id>] [--force] [--dry-run] | Push canonical skills → every enabled harness |
adept sync-from [--harness <id>] [--all] [--force] [--dry-run] | Adopt harness-side edits back into canonical |
adept diff [--harness <id>] | Show drift between canonical and rendered output |
adept harness {add|remove|list} | Manage enabled harnesses |
adept skill {add|install|update|info|search|check|edit|remove|list} | Manage canonical skills (local + skills.sh/GitHub) |
adept library {add|remove|list} | Manage remote skill-library remotes |
adept config {list|get|set|unset|llm ...} | Strict-typed project config |
Global flags: --json, --log-level debug|info|warn|error, --project <path>, --library <path>.
Run adept <cmd> --help for the authoritative, always-up-to-date surface.
cmd/adept/ main(): injects build info, calls cli.NewRoot, maps errors→exit codes
internal/cli/ Cobra composition root. One file per command group. NO package state.
pkg/adept/ STABLE public types + interfaces + sentinel errors (no behavior here)
pkg/adeptschema/ embedded JSON Schemas (skill / adapter / org / config) for validation
internal/canonical/ parse skill.yaml & SKILL.md frontmatter → *adept.Skill, schema-validate
internal/render/<h>/ one package per built-in harness: Renderer + Import (reverse render)
internal/adapter/ config-driven (YAML) harness adapters: load, validate, synthesize
internal/harness/ orchestrator: sync / sync-from / drift detection across all harnesses
internal/merge/ 3-way merge + diff3 for sync-from conflict handling
internal/library/ centralized + multi-library skill resolution (first-wins on collision)
internal/scan/ static safety scanner (+ optional LLM intent pass)
internal/registry/ github (trees API) + skillssh (skills.sh catalog) clients
internal/git/ git clone/pull/checkout-at-SHA wrapper
internal/{fsutil,locks,hash,config,project,log,budget,org}/ supporting primitives
pkg/adept holds types, not behavior. It must stay dependency-light (import-free
where possible — e.g. SkillIDPattern is a string, compiled in internal/canonical).
In-process consumers (tests, future LSP/plugins) depend on it; keep it stable.cli.NewRoot wires every concrete implementation
behind an interface into a *Deps container. No package-level state, no init() side
effects. Every command takes its dependencies explicitly so it can be unit-tested with
mocks. Add a new dependency by extending Deps, not by reaching for a singleton.(id, content-hash). Skills carry no version field; the hash is the
answer to "did this change". Do not introduce version numbers as a sync signal.<root>/skills/<id>/ with one SKILL.md
(YAML frontmatter + markdown body) plus optional sidecars (scripts/, references/,
assets/). The directory name is the authoritative id. Skill ids use the
harness-compatible charset ^[a-z0-9](?:[a-z0-9-]{0,48}[a-z0-9])?$ (no underscore).
Per-skill, per-harness overrides live in an optional harness: map (keyed by harness id)
plus a promoted model field; renderers merge their entry last via common.MergeOverride,
and the schema forbids overriding identity fields. Currently consumed by claude-code and cursor.Import and degrade to a single synthesized skill when markers are absent.config.json records which LLM provider/model is used;
API keys are resolved from the environment (ANTHROPIC_API_KEY) at call time only.cli.ExitFromError)0 clean · 1 generic error · 2 dirty/drift (ErrDirty) or merge conflict (ErrMergeConflict).clean/low/medium → 0, high → 1, critical → 2.pkg/adept — HarnessAdapter, Renderer, Skill, RenderOutput, DriftReport,
ImportedSkill, sentinel errors (ErrSkillNotFound, ErrMergeConflict, …), on-disk
layout constants (BaseDirName, SkillsDirName, …). Start here to understand contracts.pkg/adeptschema/*.schema.json — embedded JSON Schemas. Changing a canonical field
means updating the schema and the Go struct tags in pkg/adept together.internal/cli/deps.go — the Deps wiring. New commands are constructed from Deps.testdata/ golden fixtures under each internal/render/<h>/ package pin exact output.go build ./... # build everything
go build -o /tmp/adept ./cmd/adept # build the binary
go test ./... # fast tests
go test -race ./... # race detector (CI gate)
go test -run E2E ./cmd/adept # end-to-end (builds the binary, drives real commands)
go vet ./...
gofmt -l . # must print nothing
golangci-lint run # config in .golangci.yml
This repo is itself an adept skill library — committed skills live in skills/, and the
project-canonical layout (.adeptability/, .claude/) is regenerated on demand and
gitignored. To regenerate and verify rendering locally:
adept init --from "$(git rev-parse --show-toplevel)" --name adept --mode copy
adept harness add claude-code
adept sync
adept status
gofmt + goimports. CI fails on any unformatted file — run gofmt -w .
before committing. There is no separate formatter to learn..golangci.yml enables errcheck, staticcheck, govet, gocritic,
revive (exported symbols need doc comments), errorlint, nilerr, bodyclose,
prealloc, unconvert, misspell, and more. Run golangci-lint run locally.fmt.Errorf("doing X: %w", err). Compare with
errors.Is against the sentinels in pkg/adept/errors.go; add a new sentinel there
rather than matching on error strings. Never silently drop an error that loses data.feat → minor, fix/perf → patch,
feat!/BREAKING CHANGE: → major; refactor/docs/chore/test/ci → no bump).testify/require for assertions.testdata/ beside each renderer; they pin exact rendered
bytes. When you intentionally change output, update the fixture in the same commit and
explain why in the message.cmd/adept/*_test.go) builds the real binary and drives commands against temp
dirs with an isolated HOME and ADEPT_LIBRARY. Guard slow paths with
if testing.Short().internal/render, internal/status, internal/budget, and
internal/canonical at ≥80%. Tests should catch regressions, not pad coverage.Built-in (Go) adapter — for harnesses needing custom logic:
adept.HarnessAdapter in internal/render/<id>/.testdata/.internal/cli/deps.go (registerBuiltinAdapters).Config-driven adapter — for harnesses expressible declaratively (no code, no rebuild):
Drop a <id>.yaml adapter in ~/.adeptability/adapters/ matching
pkg/adeptschema/adapter.schema.json (kind = per-skill | aggregator-single |
aggregator-per-glob, plus output, frontmatter, body, detect, import hints).
release-please opens/maintains a release PR from Conventional Commits;
merging it tags vX.Y.Z.goreleaser (cross-compiled archives for darwin/linux/windows
× amd64/arm64), checksums.txt, cosign signing, and build-provenance attestation via
actions/attest-build-provenance (immutable-release safe). Docker publish to GHCR is opt-in
via the DOCKER_PUBLISH repo variable.go install, the scripts/install.sh
curl installer, Homebrew tap (itaywol/homebrew-tap), and GHCR images.scripts/npm/,
@itaywol/adeptability) are unpublished — tracked in the "additional package managers"
issue, gated on a thumbs-up before we commit to maintaining them.CHANGELOG.md, .release-please-manifest.json, or version strings;
release-please owns them.This project is indexed by GitNexus as adeptability (3310 symbols, 11238 relationships, 248 execution flows). Use the GitNexus MCP tools to understand code, assess impact, and navigate safely.
Index stale? Run
node .gitnexus/run.cjs analyzefrom the project root — it auto-selects an available runner. No.gitnexus/run.cjsyet?npx gitnexus analyze(npm 11 crash →npm i -g gitnexus; #1939).
impact({target: "symbolName", direction: "upstream"}) and report the blast radius (direct callers, affected processes, risk level) to the user.detect_changes() before committing to verify your changes only affect expected symbols and execution flows. For regression review, compare against the default branch: detect_changes({scope: "compare", base_ref: "main"}).query({query: "concept"}) to find execution flows instead of grepping. It returns process-grouped results ranked by relevance.context({name: "symbolName"}).impact on it.rename which understands the call graph.detect_changes() to check affected scope.| Resource | Use for |
|---|---|
gitnexus://repo/adeptability/context | Codebase overview, check index freshness |
gitnexus://repo/adeptability/clusters | All functional areas |
gitnexus://repo/adeptability/processes | All execution flows |
gitnexus://repo/adeptability/process/{name} | Step-by-step execution trace |
| Task | Read this skill file |
|---|---|
| Understand architecture / "How does X work?" | .claude/skills/gitnexus/gitnexus-exploring/SKILL.md |
| Blast radius / "What breaks if I change X?" | .claude/skills/gitnexus/gitnexus-impact-analysis/SKILL.md |
| Trace bugs / "Why is X failing?" | .claude/skills/gitnexus/gitnexus-debugging/SKILL.md |
| Rename / extract / split / refactor | .claude/skills/gitnexus/gitnexus-refactoring/SKILL.md |
| Tools, resources, schema reference | .claude/skills/gitnexus/gitnexus-guide/SKILL.md |
| Index, status, clean, wiki CLI commands | .claude/skills/gitnexus/gitnexus-cli/SKILL.md |