Imported from robert-hoffmann/uncle-bob (
AGENTS.md). Install upstream withnpx skills add robert-hoffmann/uncle-bob. Copyright stays with the author.
uncle-bob
Repository-level agent instructions and skill registry.
Version & Tooling Policy
Skills MUST NOT hardcode version numbers. Detect the project's actual versions from package.json, lockfiles, and pyproject.toml. Use web search to verify latest stable patterns. When the project's version differs from latest stable, note the gap and recommend an upgrade path.
Shell Entry Points
Use these command-entry defaults when working in this repository:
- use
uv run python ...for repository Python scripts, tests, and helper tooling - for short ad hoc local inspection when
uvis not needed, use the interpreter command that matches the local environment rather than assuming one universal fallback name - prefer interpreter-explicit commands and confirm the command exists in the current environment before relying on it
- prefer
taskwrappers when the repository already exposes a check or helper throughTaskfile.yml
Policy Versus Defaults
This repository is intentionally opinionated, but not every opinion has the same status.
Repository policy means the rule is explicitly part of the repository contract and is often backed by validation, integrity checks, or mandatory skill instructions.
Strong defaults mean the repository currently recommends the approach because it fits best here, while downstream adopters may still need to adapt it deliberately.
Freshness review for volatile framework and tool guidance is warning-only by default. Do not turn freshness into a blocking gate unless the repository explicitly promotes it beyond advisory status.
| Technology | Version Policy | Primary Tool | Fallback |
|---|---|---|---|
| Node.js | Latest LTS | bun | npm/node |
| Python | Latest stable | uv | pip |
| TypeScript | Latest stable | (via bun or npm) | — |
| Vue | Latest stable | — | — |
| Nuxt | Latest stable | — | — |
| Tailwind CSS | Latest stable | — | — |
| Pydantic | Latest stable (v2+) | — | — |
Repository And Distribution Boundaries
This repository is the authoring and validation factory for the distributable agent customizations. Do not assume every repository file ships to downstream projects.
Distributable surfaces:
.agents/skills/The portable skill payload. Skills may depend on their ownSKILL.md,references/,assets/,scripts/, and explicitly named sibling skills. Skills must not depend on repo-maintenance scripts, rootTaskfile.yml, CI, plugin metadata, root documentation,.ub-workflows/, or optional agents..github/agents/ub-teacher.agent.mdThe optional teaching-agent payload. The agent may know about itself and the skills. Skills must not require this agent or mention it as a runtime dependency.- Repository-only surfaces
AGENTS.md,README.md,Taskfile.yml,pyproject.toml,plugin.json,.github/workflows/,scripts/repo-maintenance/,tests/,docs/, and factory workflow artifacts are repository truth. These files may know about the skills, the optional agent, packaging, CI, and validation rules.
When editing:
- Keep files under
.agents/skills/host-agnostic, repo-agnostic, and portable unless the skill explicitly owns the referenced asset or helper. - Keep
ub-teacherindependent from factory-only paths except where it needs to locate the distributable skills in this repository. - Put factory-only planning, validation, release, and maintenance knowledge in repository-only surfaces, not inside distributable skill contracts.
- If a downstream project needs repo behavior, bundle it through skill-owned
scripts/orassets/, or describe how to detect and adapt the target project instead of pointing at this repository's root tooling.
Documentation Synchronization Policy
This repository has three active truth surfaces:
.agents/skills/and.github/agents/These are runtime and distribution truth for the installed skills and custom agents.docs/andREADME.mdThese are published explanation truth for humans evaluating and adopting the portable skills.AGENTS.md,Taskfile.yml,.github/workflows/,scripts/, and repo-maintenance checks These are repository-control truth for local workflow, CI, validation, and synchronization rules.
Keep those surfaces synchronized. Documentation drift is a defect when any of the following are true:
- a real skill under
.agents/skills/has no matching published docs page - docs mention a skill, custom agent, command, workflow, or path that no longer exists
- skill or custom-agent behavior changes without matching documentation updates
- public docs describe repository-maintenance internals instead of portable skill behavior
- documentation introduces behavior, guarantees, or workflow steps that the skill contracts do not support
- workflow, validation, deployment, or command docs no longer match
Taskfile.yml,package.json, scripts, or GitHub Actions
Synchronization is bidirectional:
- When editing any skill or custom agent, update the affected docs in the same change or explicitly state why no docs change is needed.
- When editing docs, verify the described behavior against the real skill, agent, workflow, script, or config surface.
- Keep public VitePress docs focused on portable skill behavior, skill usage, skill interaction, install flow, and diagrams that explain skill contracts.
- Keep repository-maintenance details in
README.md,AGENTS.md,.github/workflows/README.md, or repo-maintenance scripts instead of the public site. - Do not copy old reports into deep-dive docs. Use reports as research input,
then verify claims against current
SKILL.mdand reference files. - When new docs conventions become deterministic, update
scripts/check-docs-sync.mjsin the same change. - Do not make docs-sync warning-only unless this repository explicitly changes that policy.
Before finishing a change that touches skills, agents, docs, commands, workflows, or repo-maintenance behavior, run the smallest relevant validation set:
task checkfor the Python, YAML, catalog, governance, and workflow integrity baselinenpm run check:docs-syncwhen docs, skills, agents, commands, workflows, or repository paths are affectednpm run docs:buildwhen docs content, docs configuration, package metadata, or Pages deployment changes- selected governance or workflow checks when ADR, claim, evidence, or workflow-control behavior is affected
If a check is intentionally skipped, state the reason and the remaining risk.
Mandatory Skills
Always load these skills for every task — no exceptions.
| Skill | Description | Path |
|---|---|---|
| ub-quality | Cross-language code quality standards for design patterns, formatting, documentation, code structure, and refactoring. | .agents/skills/ub-quality/SKILL.md |
ub-quality is mandatory and must not be skipped. Its SKILL.md body is the
always-loaded baseline; its deeper references are loaded by the explicit
trigger rules inside the skill before producing work that depends on them.
Skills
| Skill | Description | Path |
|---|---|---|
| ub-quality | Cross-language code quality: design patterns, formatting, documentation, structure, refactoring. | .agents/skills/ub-quality/SKILL.md |
| ub-authoring | Shared authoring conventions for routing quality, non-use boundaries, naming, progressive disclosure, and reusable skill guidance. | .agents/skills/ub-authoring/SKILL.md |
| ub-css | Plain CSS & Vue/Nuxt style blocks: design tokens, cascade layers, native nesting, container queries, progressive enhancement. | .agents/skills/ub-css/SKILL.md |
| ub-nuxt | Nuxt (latest stable): typed composables, SSR/SSG/hybrid rendering, runtime config, Nitro/server routes, app-directory semantics. | .agents/skills/ub-nuxt/SKILL.md |
| ub-python | Python (latest stable): typed patterns, boundary validation, structured error handling, pytest/ruff/mypy workflows. | .agents/skills/ub-python/SKILL.md |
| ub-tailwind | Tailwind CSS (latest stable): setup, migration, debugging across standalone HTML, Vue + Vite, and Nuxt projects. | .agents/skills/ub-tailwind/SKILL.md |
| ub-ts | TypeScript (latest stable): typing, module/moduleResolution, compiler flags, tsconfig architecture. | .agents/skills/ub-ts/SKILL.md |
| ub-vuejs | Vue (latest stable): SFCs, composables, reactivity, watchers, SSR/hydration, component contracts with strict TypeScript. | .agents/skills/ub-vuejs/SKILL.md |
| ub-governance | Governance routing for testing posture, evidence/ADR/claim decisions, repository controls, exception handling, and escalation boundaries. | .agents/skills/ub-governance/SKILL.md |
| ub-customizations | VS Code Copilot customization builder: creates skills, prompts, agents, hooks, MCP configs, plugins, and bundles. | .agents/skills/ub-customizations/SKILL.md |
| ub-workflow | Direct work, lightweight specs, and initiatives with roadmaps, resumable sprints, audit, and archive flow. | .agents/skills/ub-workflow/SKILL.md |
Agents
| Agent | Description |
|---|---|
| ub-teacher | Teaching and explanation agent for readable, beginner-friendly code walkthroughs. |
Prompts
No .prompt.md files defined yet.
Instructions
No .instructions.md files defined yet.
UB Workflow Routing
- Before substantial work, read
.ub-workflows/status.md. - For non-trivial source work, read
SOURCE_ATLAS.mdand then the nearest relevant folderAGENTS.md. - Use
.ub-workflows/vision.mdwhen product direction matters. - Use
.ub-workflows/WORKFLOW_ATLAS.mdfor workflow-artifact routing. - Use
.ub-workflows/SOURCE_PACK_ATLAS.mdbefore opening retained source packs. - When forecast pressure appears, present options and tradeoffs, then wait for explicit operator decision before expanding scope.
- Keep reusable workflow mechanics in the shared
ub-workflowskill; keep repo overlays focused on local facts, boundaries, and validation commands.