diff --git a/.agents/README.md b/.agents/README.md deleted file mode 100644 index fd86c06f7f4..00000000000 --- a/.agents/README.md +++ /dev/null @@ -1,159 +0,0 @@ -# Dynamo Agent Guidance - -Shared skills, rules, and templates for AI-assisted development in the Dynamo repo. These files are the **canonical source of truth** -- tool-specific mirrors (`.github/copilot-instructions.md`, `CLAUDE.md`, `.github/agents/`) point back here. - -## Canonical Policy - -- Edit behavior and workflow guidance in `.agents/` only. -- Tool-specific files (`.github/agents/`, `.github/copilot-instructions.md`, `CLAUDE.md`) are mirrors or wrappers. -- If any mirror/wrapper conflicts with `.agents/`, `.agents/` wins. -- For generated wrappers, do not hand-edit generated sections. - -## Wrapper Sync - -Use the wrapper sync script to keep `.github/agents/` aligned with canonical skills: - -```powershell -# Regenerate wrappers from canonical skills -./.github/scripts/sync_agent_wrappers.ps1 - -# Validate wrappers are in sync (non-zero exit code on drift) -./.github/scripts/sync_agent_wrappers.ps1 -Check - -# Print a compact diagnostics summary (does not change pass/fail) -./.github/scripts/sync_agent_wrappers.ps1 -Check -VerboseReport -``` - -Check mode validates: -- Missing mapped wrappers -- Content drift in mapped wrappers -- Orphan auto-generated wrappers in `.github/agents/` that are no longer declared in the wrapper map - -## Cross-Tool Parity Matrix - -This matrix documents how canonical skills in `.agents/skills/` are exposed in each tool surface. - -| Canonical skill | Cursor | Copilot (VS Code/GitHub) | Claude Code | -|---|---|---|---| -| `dynamo-codebase-patterns` | Loaded directly from `.agents/skills/dynamo-codebase-patterns/SKILL.md` | Wrapper: `.github/agents/dynamo-codebase-patterns.agent.md` | Loaded directly from `.agents/skills/dynamo-codebase-patterns/SKILL.md` | -| `dynamo-content-designer` | Loaded directly from `.agents/skills/dynamo-content-designer/SKILL.md` | Wrapper: `.github/agents/dynamo-content-designer.agent.md` | Loaded directly from `.agents/skills/dynamo-content-designer/SKILL.md` | -| `dynamo-dotnet-expert` | Loaded directly from `.agents/skills/dynamo-dotnet-expert/SKILL.md` | Wrapper: `.github/agents/dynamo-dotnet-expert.agent.md` | Loaded directly from `.agents/skills/dynamo-dotnet-expert/SKILL.md` | -| `dynamo-dotnet-janitor` | Loaded directly from `.agents/skills/dynamo-dotnet-janitor/SKILL.md` | Wrapper: `.github/agents/dynamo-dotnet-janitor.agent.md` | Loaded directly from `.agents/skills/dynamo-dotnet-janitor/SKILL.md` | -| `dynamo-ecosystem-reviewer` | Loaded directly from `.agents/skills/dynamo-ecosystem-reviewer/SKILL.md` | Wrapper: `.github/agents/dynamo-ecosystem-reviewer.agent.md` | Loaded directly from `.agents/skills/dynamo-ecosystem-reviewer/SKILL.md` | -| `dynamo-onboarding` | Loaded directly from `.agents/skills/dynamo-onboarding/SKILL.md` | Wrapper: `.github/agents/dynamo-onboarding.agent.md` | Loaded directly from `.agents/skills/dynamo-onboarding/SKILL.md` | -| `dynamo-pr-description` | Loaded directly from `.agents/skills/dynamo-pr-description/SKILL.md` | Wrapper: `.github/agents/dynamo-pr-description.agent.md` | Loaded directly from `.agents/skills/dynamo-pr-description/SKILL.md` | -| `dynamo-jira-ticket` | Loaded directly from `.agents/skills/dynamo-jira-ticket/SKILL.md` | Wrapper: `.github/agents/dynamo-jira-ticket.agent.md` | Loaded directly from `.agents/skills/dynamo-jira-ticket/SKILL.md` | -| `dynamo-skill-writer` | Loaded directly from `.agents/skills/dynamo-skill-writer/SKILL.md` | Wrapper: `.github/agents/dynamo-skill-writer.agent.md` | Loaded directly from `.agents/skills/dynamo-skill-writer/SKILL.md` | -| `dynamo-unit-testing` | Loaded directly from `.agents/skills/dynamo-unit-testing/SKILL.md` | Wrapper: `.github/agents/dynamo-unit-testing.agent.md` | Loaded directly from `.agents/skills/dynamo-unit-testing/SKILL.md` | -| `dynamo-ux-designer` | Loaded directly from `.agents/skills/dynamo-ux-designer/SKILL.md` | Wrapper: `.github/agents/dynamo-ux-designer.agent.md` | Loaded directly from `.agents/skills/dynamo-ux-designer/SKILL.md` | -| `dynamo-webview-component-scaffold` | Loaded directly from `.agents/skills/dynamo-webview-component-scaffold/SKILL.md` | Wrapper: `.github/agents/dynamo-webview-component-scaffold.agent.md` | Loaded directly from `.agents/skills/dynamo-webview-component-scaffold/SKILL.md` | - -Notes: -- Skill logic lives only in `.agents/skills/`. -- Copilot (VS Code) wrappers are generated/validated by `.github/scripts/sync_agent_wrappers.ps1`. Cursor and Claude Code load directly from `.agents/`. -- If mirrors differ from canonical files, canonical files win. - -## Quick Reference - -### Skills (task workflows that produce outputs) - -Each skill lives in its own folder with a `SKILL.md` and optionally a `template.md`. - -| Skill | When to use | Repo scope | -|-------|-------------|------------| -| [dynamo-codebase-patterns](skills/dynamo-codebase-patterns/SKILL.md) | Discovering and enforcing non-obvious Dynamo structural patterns in scans and reviews. | Repo-specific variant | -| [dynamo-content-designer](skills/dynamo-content-designer/SKILL.md) | Writing documentation, tutorials, release notes, and user-facing technical content. | Repo-specific variant | -| [dynamo-dotnet-expert](skills/dynamo-dotnet-expert/SKILL.md) | Writing or reviewing C#/.NET code. Code design, testing, performance, PublicAPI management. | Repo-specific variant | -| [dynamo-dotnet-janitor](skills/dynamo-dotnet-janitor/SKILL.md) | Janitorial C#/.NET cleanup, modernization, and technical debt remediation. | Repo-specific variant | -| [dynamo-ecosystem-reviewer](skills/dynamo-ecosystem-reviewer/SKILL.md) | Reviewing changes for ecosystem compatibility and cross-repo/platform constraints. | Repo-specific variant | -| [dynamo-onboarding](skills/dynamo-onboarding/SKILL.md) | Learning the Dynamo codebase, architecture briefings, finding where to start on a Jira ticket. | Repo-specific variant | -| [dynamo-pr-description](skills/dynamo-pr-description/SKILL.md) | Writing PR descriptions matching the Dynamo template. | Repo-specific variant | -| [dynamo-jira-ticket](skills/dynamo-jira-ticket/SKILL.md) | Creating or refining Jira tickets from bugs, test failures, or feature requests. | Repo-specific variant | -| [dynamo-skill-writer](skills/dynamo-skill-writer/SKILL.md) | Authoring and updating skills; writing high-quality skill instructions; managing sync across Copilot, Cursor, and Claude surfaces. | Repo-specific variant | -| [dynamo-unit-testing](skills/dynamo-unit-testing/SKILL.md) | Writing NUnit tests following Dynamo patterns. Test classes, setup/teardown, .dyn file testing. | Repo-specific variant | -| [dynamo-ux-designer](skills/dynamo-ux-designer/SKILL.md) | Planning UX flows and producing Weave-aligned interface designs and mockups. | Repo-specific variant | -| [dynamo-webview-component-scaffold](skills/dynamo-webview-component-scaffold/SKILL.md) | Scaffolding new Dynamo WebView2 view-extension package repositories. | Repo-specific variant | - -### Templates (bundled with skills) - -Templates are co-located inside the skill folder that uses them: - -| Template | Location | Purpose | -|----------|----------|---------| -| PR description | [.github/PULL_REQUEST_TEMPLATE.md](../../.github/PULL_REQUEST_TEMPLATE.md) | GitHub PR template (referenced by PR description skill) | -| Jira triage | [dynamo-jira-ticket/template.md](./skills/dynamo-jira-ticket/template.md) | Triage a Jira ticket into a structured issue | - -### Rules (short guardrails -- always applicable) - -| Rule | Scope | Repo scope | -|------|-------|------------| -| [dynamo-core-rules](./rules/dynamo-core-rules.md) | C#/.NET coding standards, NUnit, PublicAPI, security, quality checks. | Repo-specific variant | - -## Folder Structure - -``` -.agents/ -├── skills/ -│ ├── dynamo-codebase-patterns/ -│ │ ├── SKILL.md -│ │ └── patterns/ -│ ├── dynamo-content-designer/ -│ │ ├── SKILL.md -│ │ └── assets/ -│ ├── dynamo-dotnet-expert/ -│ │ └── SKILL.md -│ ├── dynamo-dotnet-janitor/ -│ │ └── SKILL.md -│ ├── dynamo-ecosystem-reviewer/ -│ │ └── SKILL.md -│ ├── dynamo-onboarding/ -│ │ └── SKILL.md -│ ├── dynamo-pr-description/ -│ │ └── SKILL.md -│ ├── dynamo-jira-ticket/ -│ │ ├── SKILL.md -│ │ └── assets/ -│ │ └── template.md ← copy/paste Jira template -│ ├── dynamo-skill-writer/ -│ │ └── SKILL.md -│ ├── dynamo-unit-testing/ -│ │ ├── SKILL.md -│ │ ├── assets/ -│ │ │ └── test-patterns.md ← code templates & examples -│ │ └── references/ -│ │ └── quality-checklist.md ← guidelines & best practices -│ ├── dynamo-ux-designer/ -│ │ └── SKILL.md -│ └── dynamo-webview-component-scaffold/ -│ └── SKILL.md -├── rules/ -│ └── dynamo-core-rules.md -└── README.md ← you are here -``` - -## File classification - -- **Identical across repos**: Content is the same in both Dynamo and DynamoMCP repos. Changes should be mirrored. -- **Repo-specific variant**: Same skill name across repos, but content is tailored to each repo's architecture, templates, and tools. - -## How this relates to other guidance files - -``` -.agents/ <-- canonical source of truth (you are here); loaded directly by Cursor and Claude Code -.github/copilot-instructions.md <-- Copilot (VS Code) guidance + pointers here -.github/agents/ <-- generated Copilot (VS Code) wrappers that mirror canonical skills -../AGENTS.md <-- AI Agents guidance overview + pointers here -../CLAUDE.md <-- Claude guidance + pointers here -``` - -## For Cursor users - -Cursor loads agent skills directly from `.agents/`. No additional configuration needed — agents are available by name in the Cursor chat. - -## For Copilot users - -Read `.github/copilot-instructions.md` for project context. Existing agents in `.github/agents/` are also available. Reference skills here for task workflows. - -## For Claude users - -Read `CLAUDE.md` at the repo root for project context. Reference skills here for detailed task guidance. diff --git a/.claude/README.md b/.claude/README.md new file mode 100644 index 00000000000..5fc70204234 --- /dev/null +++ b/.claude/README.md @@ -0,0 +1,50 @@ +# Dynamo Claude Configuration + +Skills and rules for AI-assisted development in the Dynamo repo. +Canonical source of truth for Claude Code, claude.com, and Copilot (via generated wrappers). + +## Directory structure + +``` +.claude/ +├── settings.json # Shared Claude configuration tracked in source control +├── skills/ # Canonical agent skills (agentskills.io format) +│ └── / +│ └── SKILL.md +├── rules/ # Always-on coding rules +│ └── .md +├── agents/ # Additional tracked agent configuration/assets +├── agent-memory/ # Tracked shared memory/context files +└── README.md # This file +``` + +## Skills + +Reusable prompts following the [agentskills.io](https://agentskills.io/specification) format. Each skill lives in `skills//SKILL.md`. In Claude Code they are auto-triggered by description or invoked explicitly. To upload to claude.com, ZIP the skill directory and upload via Settings > Capabilities. + +## Rules + +Always-on guardrails in `rules/` applied across all sessions. + +## Cross-tool parity + +Skills are the canonical source. The table below shows how each tool loads them. + +| Tool | How skills load | +|------|----------------| +| **Claude Code** | Natively from `.claude/skills/` | +| **Copilot (VS Code)** | Generated wrappers in `.github/agents/` | +| **Copilot (GitHub.com / CLI)** | Generated wrappers in `.github/agents/` only | +| **Cursor** | Reference skill files directly with `@.claude/skills//SKILL.md` | + +## Wrapper sync + +Keep Copilot wrappers in `.github/agents/` in sync with skills: + +```powershell +# Regenerate wrappers +./.github/scripts/sync_agent_wrappers.ps1 + +# Validate (non-zero exit on drift — run in CI) +./.github/scripts/sync_agent_wrappers.ps1 -Check -Report +``` diff --git a/.agents/rules/dynamo-core-rules.md b/.claude/rules/dynamo-core-rules.md similarity index 100% rename from .agents/rules/dynamo-core-rules.md rename to .claude/rules/dynamo-core-rules.md diff --git a/.claude/settings.json b/.claude/settings.json new file mode 100644 index 00000000000..0967ef424bc --- /dev/null +++ b/.claude/settings.json @@ -0,0 +1 @@ +{} diff --git a/.agents/skills/dynamo-codebase-patterns/SKILL.md b/.claude/skills/dynamo-codebase-patterns/SKILL.md similarity index 100% rename from .agents/skills/dynamo-codebase-patterns/SKILL.md rename to .claude/skills/dynamo-codebase-patterns/SKILL.md diff --git a/.agents/skills/dynamo-codebase-patterns/patterns/README.md b/.claude/skills/dynamo-codebase-patterns/patterns/README.md similarity index 100% rename from .agents/skills/dynamo-codebase-patterns/patterns/README.md rename to .claude/skills/dynamo-codebase-patterns/patterns/README.md diff --git a/.agents/skills/dynamo-codebase-patterns/patterns/dp-001-register-all-ports.md b/.claude/skills/dynamo-codebase-patterns/patterns/dp-001-register-all-ports.md similarity index 100% rename from .agents/skills/dynamo-codebase-patterns/patterns/dp-001-register-all-ports.md rename to .claude/skills/dynamo-codebase-patterns/patterns/dp-001-register-all-ports.md diff --git a/.agents/skills/dynamo-codebase-patterns/patterns/dp-002-raises-modification-events.md b/.claude/skills/dynamo-codebase-patterns/patterns/dp-002-raises-modification-events.md similarity index 100% rename from .agents/skills/dynamo-codebase-patterns/patterns/dp-002-raises-modification-events.md rename to .claude/skills/dynamo-codebase-patterns/patterns/dp-002-raises-modification-events.md diff --git a/.agents/skills/dynamo-codebase-patterns/patterns/dp-003-dynamowebview2-init-sequence.md b/.claude/skills/dynamo-codebase-patterns/patterns/dp-003-dynamowebview2-init-sequence.md similarity index 100% rename from .agents/skills/dynamo-codebase-patterns/patterns/dp-003-dynamowebview2-init-sequence.md rename to .claude/skills/dynamo-codebase-patterns/patterns/dp-003-dynamowebview2-init-sequence.md diff --git a/.agents/skills/dynamo-codebase-patterns/patterns/dp-006-asynctask-two-phase-init.md b/.claude/skills/dynamo-codebase-patterns/patterns/dp-006-asynctask-two-phase-init.md similarity index 100% rename from .agents/skills/dynamo-codebase-patterns/patterns/dp-006-asynctask-two-phase-init.md rename to .claude/skills/dynamo-codebase-patterns/patterns/dp-006-asynctask-two-phase-init.md diff --git a/.agents/skills/dynamo-codebase-patterns/patterns/dp-007-task-completion-scheduler-thread.md b/.claude/skills/dynamo-codebase-patterns/patterns/dp-007-task-completion-scheduler-thread.md similarity index 100% rename from .agents/skills/dynamo-codebase-patterns/patterns/dp-007-task-completion-scheduler-thread.md rename to .claude/skills/dynamo-codebase-patterns/patterns/dp-007-task-completion-scheduler-thread.md diff --git a/.agents/skills/dynamo-codebase-patterns/patterns/dp-008-viewextension-lifecycle.md b/.claude/skills/dynamo-codebase-patterns/patterns/dp-008-viewextension-lifecycle.md similarity index 100% rename from .agents/skills/dynamo-codebase-patterns/patterns/dp-008-viewextension-lifecycle.md rename to .claude/skills/dynamo-codebase-patterns/patterns/dp-008-viewextension-lifecycle.md diff --git a/.agents/skills/dynamo-codebase-patterns/patterns/dp-009-workspace-type-guard.md b/.claude/skills/dynamo-codebase-patterns/patterns/dp-009-workspace-type-guard.md similarity index 100% rename from .agents/skills/dynamo-codebase-patterns/patterns/dp-009-workspace-type-guard.md rename to .claude/skills/dynamo-codebase-patterns/patterns/dp-009-workspace-type-guard.md diff --git a/.agents/skills/dynamo-codebase-patterns/patterns/dp-010-keepreference-ffi.md b/.claude/skills/dynamo-codebase-patterns/patterns/dp-010-keepreference-ffi.md similarity index 100% rename from .agents/skills/dynamo-codebase-patterns/patterns/dp-010-keepreference-ffi.md rename to .claude/skills/dynamo-codebase-patterns/patterns/dp-010-keepreference-ffi.md diff --git a/.agents/skills/dynamo-codebase-patterns/patterns/dp-011-arbitrary-dimension-array.md b/.claude/skills/dynamo-codebase-patterns/patterns/dp-011-arbitrary-dimension-array.md similarity index 100% rename from .agents/skills/dynamo-codebase-patterns/patterns/dp-011-arbitrary-dimension-array.md rename to .claude/skills/dynamo-codebase-patterns/patterns/dp-011-arbitrary-dimension-array.md diff --git a/.agents/skills/dynamo-codebase-patterns/patterns/dp-012-dispose-derived-geometry.md b/.claude/skills/dynamo-codebase-patterns/patterns/dp-012-dispose-derived-geometry.md similarity index 100% rename from .agents/skills/dynamo-codebase-patterns/patterns/dp-012-dispose-derived-geometry.md rename to .claude/skills/dynamo-codebase-patterns/patterns/dp-012-dispose-derived-geometry.md diff --git a/.agents/skills/dynamo-codebase-patterns/patterns/dp-013-isvisibleindynamolibrary.md b/.claude/skills/dynamo-codebase-patterns/patterns/dp-013-isvisibleindynamolibrary.md similarity index 100% rename from .agents/skills/dynamo-codebase-patterns/patterns/dp-013-isvisibleindynamolibrary.md rename to .claude/skills/dynamo-codebase-patterns/patterns/dp-013-isvisibleindynamolibrary.md diff --git a/.agents/skills/dynamo-codebase-patterns/patterns/dp-014-asynctask-canmergewith.md b/.claude/skills/dynamo-codebase-patterns/patterns/dp-014-asynctask-canmergewith.md similarity index 100% rename from .agents/skills/dynamo-codebase-patterns/patterns/dp-014-asynctask-canmergewith.md rename to .claude/skills/dynamo-codebase-patterns/patterns/dp-014-asynctask-canmergewith.md diff --git a/.agents/skills/dynamo-codebase-patterns/patterns/dp-015-property-change-manager.md b/.claude/skills/dynamo-codebase-patterns/patterns/dp-015-property-change-manager.md similarity index 100% rename from .agents/skills/dynamo-codebase-patterns/patterns/dp-015-property-change-manager.md rename to .claude/skills/dynamo-codebase-patterns/patterns/dp-015-property-change-manager.md diff --git a/.agents/skills/dynamo-content-designer/SKILL.md b/.claude/skills/dynamo-content-designer/SKILL.md similarity index 100% rename from .agents/skills/dynamo-content-designer/SKILL.md rename to .claude/skills/dynamo-content-designer/SKILL.md diff --git a/.agents/skills/dynamo-content-designer/assets/blog-posts.md b/.claude/skills/dynamo-content-designer/assets/blog-posts.md similarity index 100% rename from .agents/skills/dynamo-content-designer/assets/blog-posts.md rename to .claude/skills/dynamo-content-designer/assets/blog-posts.md diff --git a/.agents/skills/dynamo-content-designer/assets/feature-documentation.md b/.claude/skills/dynamo-content-designer/assets/feature-documentation.md similarity index 100% rename from .agents/skills/dynamo-content-designer/assets/feature-documentation.md rename to .claude/skills/dynamo-content-designer/assets/feature-documentation.md diff --git a/.agents/skills/dynamo-content-designer/assets/node-descriptions.md b/.claude/skills/dynamo-content-designer/assets/node-descriptions.md similarity index 100% rename from .agents/skills/dynamo-content-designer/assets/node-descriptions.md rename to .claude/skills/dynamo-content-designer/assets/node-descriptions.md diff --git a/.agents/skills/dynamo-content-designer/assets/node-errors-warnings.md b/.claude/skills/dynamo-content-designer/assets/node-errors-warnings.md similarity index 100% rename from .agents/skills/dynamo-content-designer/assets/node-errors-warnings.md rename to .claude/skills/dynamo-content-designer/assets/node-errors-warnings.md diff --git a/.agents/skills/dynamo-content-designer/assets/release-notes.md b/.claude/skills/dynamo-content-designer/assets/release-notes.md similarity index 100% rename from .agents/skills/dynamo-content-designer/assets/release-notes.md rename to .claude/skills/dynamo-content-designer/assets/release-notes.md diff --git a/.agents/skills/dynamo-content-designer/assets/tutorials-user-guides.md b/.claude/skills/dynamo-content-designer/assets/tutorials-user-guides.md similarity index 100% rename from .agents/skills/dynamo-content-designer/assets/tutorials-user-guides.md rename to .claude/skills/dynamo-content-designer/assets/tutorials-user-guides.md diff --git a/.agents/skills/dynamo-content-designer/assets/ui-content.md b/.claude/skills/dynamo-content-designer/assets/ui-content.md similarity index 100% rename from .agents/skills/dynamo-content-designer/assets/ui-content.md rename to .claude/skills/dynamo-content-designer/assets/ui-content.md diff --git a/.agents/skills/dynamo-dotnet-expert/SKILL.md b/.claude/skills/dynamo-dotnet-expert/SKILL.md similarity index 88% rename from .agents/skills/dynamo-dotnet-expert/SKILL.md rename to .claude/skills/dynamo-dotnet-expert/SKILL.md index 559b6039204..2860173a2cd 100644 --- a/.agents/skills/dynamo-dotnet-expert/SKILL.md +++ b/.claude/skills/dynamo-dotnet-expert/SKILL.md @@ -15,9 +15,9 @@ description: Write and review C#/.NET code in Dynamo following Dynamo coding sta ## When not to use -- Writing NUnit tests -- use [dynamo-unit-testing](../dynamo-unit-testing/SKILL.md) instead. -- Architecture / onboarding questions -- use [dynamo-onboarding](../dynamo-onboarding/SKILL.md) instead. -- PR descriptions -- use [dynamo-pr-description](../dynamo-pr-description/SKILL.md) instead. +- Writing NUnit tests -- use dynamo-unit-testing instead. +- Architecture / onboarding questions -- use dynamo-onboarding instead. +- PR descriptions -- use dynamo-pr-description instead. ## Inputs expected @@ -94,4 +94,4 @@ Comments explain *why*, not what. --- **Related Skills:** -[dynamo-unit-testing](../dynamo-unit-testing/SKILL.md) • [dynamo-onboarding](../dynamo-onboarding/SKILL.md) • [dynamo-pr-description](../dynamo-pr-description/SKILL.md) +dynamo-unit-testing • dynamo-onboarding • dynamo-pr-description diff --git a/.agents/skills/dynamo-dotnet-expert/assets/csharp-patterns.md b/.claude/skills/dynamo-dotnet-expert/assets/csharp-patterns.md similarity index 100% rename from .agents/skills/dynamo-dotnet-expert/assets/csharp-patterns.md rename to .claude/skills/dynamo-dotnet-expert/assets/csharp-patterns.md diff --git a/.agents/skills/dynamo-dotnet-expert/assets/publicapi-guide.md b/.claude/skills/dynamo-dotnet-expert/assets/publicapi-guide.md similarity index 100% rename from .agents/skills/dynamo-dotnet-expert/assets/publicapi-guide.md rename to .claude/skills/dynamo-dotnet-expert/assets/publicapi-guide.md diff --git a/.agents/skills/dynamo-dotnet-expert/references/quality-checklist.md b/.claude/skills/dynamo-dotnet-expert/references/quality-checklist.md similarity index 100% rename from .agents/skills/dynamo-dotnet-expert/references/quality-checklist.md rename to .claude/skills/dynamo-dotnet-expert/references/quality-checklist.md diff --git a/.agents/skills/dynamo-dotnet-janitor/SKILL.md b/.claude/skills/dynamo-dotnet-janitor/SKILL.md similarity index 100% rename from .agents/skills/dynamo-dotnet-janitor/SKILL.md rename to .claude/skills/dynamo-dotnet-janitor/SKILL.md diff --git a/.agents/skills/dynamo-ecosystem-reviewer/SKILL.md b/.claude/skills/dynamo-ecosystem-reviewer/SKILL.md similarity index 100% rename from .agents/skills/dynamo-ecosystem-reviewer/SKILL.md rename to .claude/skills/dynamo-ecosystem-reviewer/SKILL.md diff --git a/.agents/skills/dynamo-jira-ticket/SKILL.md b/.claude/skills/dynamo-jira-ticket/SKILL.md similarity index 95% rename from .agents/skills/dynamo-jira-ticket/SKILL.md rename to .claude/skills/dynamo-jira-ticket/SKILL.md index 4304ff00382..4c9d7dd6e9d 100644 --- a/.agents/skills/dynamo-jira-ticket/SKILL.md +++ b/.claude/skills/dynamo-jira-ticket/SKILL.md @@ -13,8 +13,8 @@ description: Create structured Jira tickets for Dynamo from bug reports, failing ## When not to use -- PR descriptions -- use [dynamo-pr-description](../dynamo-pr-description/SKILL.md) instead. -- Architecture questions -- use [dynamo-onboarding](../dynamo-onboarding/SKILL.md) instead. +- PR descriptions -- use dynamo-pr-description instead. +- Architecture questions -- use dynamo-onboarding instead. ## Inputs expected diff --git a/.agents/skills/dynamo-jira-ticket/assets/template.md b/.claude/skills/dynamo-jira-ticket/assets/template.md similarity index 100% rename from .agents/skills/dynamo-jira-ticket/assets/template.md rename to .claude/skills/dynamo-jira-ticket/assets/template.md diff --git a/.agents/skills/dynamo-onboarding/SKILL.md b/.claude/skills/dynamo-onboarding/SKILL.md similarity index 98% rename from .agents/skills/dynamo-onboarding/SKILL.md rename to .claude/skills/dynamo-onboarding/SKILL.md index 798325def8d..0e8e1e164b7 100644 --- a/.agents/skills/dynamo-onboarding/SKILL.md +++ b/.claude/skills/dynamo-onboarding/SKILL.md @@ -14,7 +14,7 @@ description: Navigate the Dynamo codebase and produce architecture briefings. Us ## When not to use -- Writing or reviewing C# code -- use [dynamo-dotnet-expert](../dynamo-dotnet-expert/SKILL.md). +- Writing or reviewing C# code -- use dynamo-dotnet-expert. - Architecture / onboarding for DynamoMCP -- that lives in the DynamoMCP repo. ## Inputs expected diff --git a/.agents/skills/dynamo-pr-description/SKILL.md b/.claude/skills/dynamo-pr-description/SKILL.md similarity index 97% rename from .agents/skills/dynamo-pr-description/SKILL.md rename to .claude/skills/dynamo-pr-description/SKILL.md index 512ba692bac..dc9a2fe4c79 100644 --- a/.agents/skills/dynamo-pr-description/SKILL.md +++ b/.claude/skills/dynamo-pr-description/SKILL.md @@ -14,7 +14,7 @@ description: Generate PR descriptions for Dynamo that align with the team templa ## When not to use - PRs targeting the DynamoMCP repo -- that repo has its own PR description skill. -- Jira ticket triage -- use [template](../dynamo-jira-ticket/assets/template.md) instead. +- Jira ticket triage -- use dynamo-jira-ticket instead. ## Inputs expected diff --git a/.agents/skills/dynamo-skill-writer/SKILL.md b/.claude/skills/dynamo-skill-writer/SKILL.md similarity index 82% rename from .agents/skills/dynamo-skill-writer/SKILL.md rename to .claude/skills/dynamo-skill-writer/SKILL.md index 138c77456fd..5c3a91199af 100644 --- a/.agents/skills/dynamo-skill-writer/SKILL.md +++ b/.claude/skills/dynamo-skill-writer/SKILL.md @@ -1,15 +1,15 @@ --- name: dynamo-skill-writer -description: Author and maintain Dynamo agent skills. Use this skill whenever creating a new skill in .agents/skills/, updating an existing skill, fixing drift between canonical skills and Copilot/Cursor/Claude wrappers, or asking how to write effective skill instructions for the Dynamo repo. +description: Author and maintain Dynamo agent skills. Use this skill whenever creating a new skill in .claude/skills/, updating an existing skill, fixing drift between canonical skills and Copilot/Cursor/Claude wrappers, or asking how to write effective skill instructions for the Dynamo repo. --- # Dynamo Skill Writer ## When to use -- Creating a new skill in `.agents/skills/`. +- Creating a new skill in `.claude/skills/`. - Updating an existing skill and ensuring tool mirrors remain aligned. -- Adding or updating Copilot agent wrappers generated from canonical skills. +- Adding or updating Copilot or Claude Code agent wrappers generated from canonical skills. - Fixing drift between canonical skill content and generated wrappers. ## When not to use @@ -24,48 +24,49 @@ A request to add/update a skill, or a request to sync skill surfaces across Copi ## Output format A concrete set of file edits and validation steps that: -- updates canonical skill content in `.agents/skills/` -- updates sync metadata in `.github/scripts/sync_agent_wrappers.ps1` when Copilot exposure is needed -- regenerates and validates wrappers in `.github/agents/` -- updates index/docs references in `.agents/README.md`, `.github/copilot-instructions.md`, and `AGENTS.md` when applicable +- updates canonical skill content in `.claude/skills/` +- updates sync metadata in `.github/scripts/sync_agent_wrappers.ps1` when Copilot surfacing is needed +- regenerates and validates Copilot wrappers in `.github/agents/` +- updates index/docs references in `.claude/README.md`, `.github/copilot-instructions.md`, and `AGENTS.md` when applicable --- ## Workflow 1. Determine whether this is a **new skill** or an **update to an existing skill**. -2. Author or update canonical content in `.agents/skills//SKILL.md`. -3. **Ask the user** whether the skill should be surfaced as a Copilot agent before touching any wrapper files. The sync steps below are optional — skip them unless the user confirms. +2. Author or update canonical content in `.claude/skills//SKILL.md`. +3. **Ask the user** whether the skill should be surfaced as a Copilot and Claude Code agent before touching any wrapper files. The sync steps below are optional — skip them unless the user confirms. 4. *(If confirmed)* Add an entry to the `canonicalSkills` array in `.github/scripts/sync_agent_wrappers.ps1`. 5. *(If confirmed)* Regenerate wrappers: `./.github/scripts/sync_agent_wrappers.ps1` -6. *(If confirmed)* Validate sync: `./.github/scripts/sync_agent_wrappers.ps1 -Check -VerboseReport` +6. *(If confirmed)* Validate sync: `./.github/scripts/sync_agent_wrappers.ps1 -Check -Report` 7. Update discovery docs when skill inventory changed: - - `.agents/README.md` + - `.claude/README.md` - `.github/copilot-instructions.md` - `AGENTS.md` 8. Ensure no contradictions between canonical and mirrored surfaces. ## Boundaries -- ✅ **Always**: edit `.agents/skills//SKILL.md` and its `assets/`/`references/` files; update `.agents/README.md` and `AGENTS.md` -- ⚠️ **Ask first**: touch `.github/scripts/sync_agent_wrappers.ps1` or trigger wrapper regeneration — confirm Copilot surfacing intent before running the sync script +- ✅ **Always**: edit `.claude/skills//SKILL.md` and its `assets/`/`references/` files; update `.claude/README.md` and `AGENTS.md` +- ⚠️ **Ask first**: touch `.github/scripts/sync_agent_wrappers.ps1` or trigger wrapper regeneration — confirm cross-tool surfacing intent before running the sync script - 🚫 **Never**: hand-edit generated wrappers in `.github/agents/` — they are always overwritten by the sync script, so manual edits are lost and create drift ## Rules -- `.agents/` is the canonical source of truth for skill logic. When mirrors conflict with canonical files, canonical wins. +- `.claude/` is the canonical source of truth for skill logic. When mirrors conflict with canonical files, canonical wins. - Generated wrappers in `.github/agents/` must never be hand-edited — they exist only as outputs of the sync script. +- Skills in `.claude/skills/` are loaded natively by Claude Code — no `.claude/agents/` wrapper is needed for them. - Skill metadata (`name`/`description`) should be concise and stable; churn in these fields breaks triggering accuracy. - Keep changes deterministic so `-Check` mode stays reliable in CI. ## New Skill Checklist -- [ ] Created `.agents/skills//SKILL.md` with frontmatter (`name`, `description`) -- [ ] Added skill to `.agents/README.md` Quick Reference table -- [ ] Added skill to `.agents/README.md` parity matrix (if cross-tool surfaced) +- [ ] Created `.claude/skills//SKILL.md` with frontmatter (`name`, `description`) +- [ ] Added skill to `.claude/README.md` Quick Reference table +- [ ] Added skill to `.claude/README.md` parity matrix (if cross-tool surfaced) - [ ] *(If Copilot-surfaced)* Added skill to `.github/scripts/sync_agent_wrappers.ps1` wrapper map - [ ] *(If Copilot-surfaced)* Regenerated `.github/agents/*` wrappers -- [ ] *(If Copilot-surfaced)* Ran `./.github/scripts/sync_agent_wrappers.ps1 -Check -VerboseReport` +- [ ] *(If Copilot-surfaced)* Ran `./.github/scripts/sync_agent_wrappers.ps1 -Check -Report` - [ ] Updated `.github/copilot-instructions.md` skill list - [ ] Updated `AGENTS.md` skill list @@ -79,10 +80,10 @@ A concrete set of file edits and validation steps that: > "Create a skill that enforces consistent skill-sync behavior across Copilot, Cursor, and Claude." Expected result: -- New canonical skill in `.agents/skills/` +- New canonical skill in `.claude/skills/` - User asked whether Copilot wrapper is needed before any sync steps run - *(If yes)* New generated wrapper in `.github/agents/`, sync script updated and passing in check mode -- `AGENTS.md`, `.agents/README.md`, and `.github/copilot-instructions.md` skill indexes updated +- `AGENTS.md`, `.claude/README.md`, and `.github/copilot-instructions.md` skill indexes updated --- @@ -160,10 +161,10 @@ When a skill touches multiple directories, state which it reads vs. writes. This | Path | Access | |---|---| -| `.agents/skills//SKILL.md` | Read + Write (canonical) | +| `.claude/skills//SKILL.md` | Read + Write (canonical) | | `.github/agents/*.md` | Read only (generated — never hand-edit) | | `.github/scripts/sync_agent_wrappers.ps1` | Read + Write (sync map) | -| `.agents/README.md` | Read + Write (index) | +| `.claude/README.md` | Read + Write (index) | ### Reference assets, don't inline everything diff --git a/.agents/skills/dynamo-unit-testing/SKILL.md b/.claude/skills/dynamo-unit-testing/SKILL.md similarity index 85% rename from .agents/skills/dynamo-unit-testing/SKILL.md rename to .claude/skills/dynamo-unit-testing/SKILL.md index 673d691caac..f1e8993f773 100644 --- a/.agents/skills/dynamo-unit-testing/SKILL.md +++ b/.claude/skills/dynamo-unit-testing/SKILL.md @@ -14,9 +14,9 @@ description: Write comprehensive NUnit tests for the Dynamo codebase following D - Debugging test failures or flaky tests ## When not to use -- General coding questions -- use [dynamo-dotnet-expert](../dynamo-dotnet-expert/SKILL.md) instead -- Architecture questions -- use [dynamo-onboarding](../dynamo-onboarding/SKILL.md) instead -- PR descriptions -- use [dynamo-pr-description](../dynamo-pr-description/SKILL.md) instead +- General coding questions -- use dynamo-dotnet-expert instead +- Architecture questions -- use dynamo-onboarding instead +- PR descriptions -- use dynamo-pr-description instead ## Inputs expected Test requirements, failing functionality to test, existing code to cover, or test code to review. @@ -56,4 +56,5 @@ One behavior per test, descriptive names, Arrange-Act-Assert structure. - **[quality-checklist.md](./references/quality-checklist.md)** - Quality guidelines, anti-patterns, best practices **Related Skills:** -[dynamo-dotnet-expert](../dynamo-dotnet-expert/SKILL.md) • [dynamo-onboarding](../dynamo-onboarding/SKILL.md) +- dynamo-dotnet-expert +- dynamo-onboarding diff --git a/.agents/skills/dynamo-unit-testing/assets/test-patterns.md b/.claude/skills/dynamo-unit-testing/assets/test-patterns.md similarity index 100% rename from .agents/skills/dynamo-unit-testing/assets/test-patterns.md rename to .claude/skills/dynamo-unit-testing/assets/test-patterns.md diff --git a/.agents/skills/dynamo-unit-testing/references/quality-checklist.md b/.claude/skills/dynamo-unit-testing/references/quality-checklist.md similarity index 100% rename from .agents/skills/dynamo-unit-testing/references/quality-checklist.md rename to .claude/skills/dynamo-unit-testing/references/quality-checklist.md diff --git a/.agents/skills/dynamo-ux-designer/SKILL.md b/.claude/skills/dynamo-ux-designer/SKILL.md similarity index 100% rename from .agents/skills/dynamo-ux-designer/SKILL.md rename to .claude/skills/dynamo-ux-designer/SKILL.md diff --git a/.agents/skills/dynamo-webview-component-scaffold/SKILL.md b/.claude/skills/dynamo-webview-component-scaffold/SKILL.md similarity index 100% rename from .agents/skills/dynamo-webview-component-scaffold/SKILL.md rename to .claude/skills/dynamo-webview-component-scaffold/SKILL.md diff --git a/.github/agents/dynamo-codebase-patterns.agent.md b/.github/agents/dynamo-codebase-patterns.agent.md index af5cd92aa59..8f78bf9109d 100644 --- a/.github/agents/dynamo-codebase-patterns.agent.md +++ b/.github/agents/dynamo-codebase-patterns.agent.md @@ -3,22 +3,10 @@ name: Dynamo Codebase Patterns description: Discovers and documents non-obvious structural and architectural patterns unique to this codebase. Reviews incoming changes for consistency with established patterns. Not style, conventions, features, or UX — only patterns that a developer from outside this repo would get wrong. --- -# Dynamo Codebase Patterns - -This is a thin compatibility wrapper for the canonical skill. - -Canonical source of truth: -- .agents/skills/dynamo-codebase-patterns/SKILL.md - -Usage guidance: -- Apply the full instructions from the canonical skill file above. -- If this wrapper and the canonical skill ever differ, the canonical skill wins. - -Maintenance note: -- Keep this file lightweight to avoid drift across tools (Copilot/Cursor/Claude). +[Dynamo Codebase Patterns](../../.claude/skills/dynamo-codebase-patterns/SKILL.md) diff --git a/.github/agents/dynamo-content-designer.agent.md b/.github/agents/dynamo-content-designer.agent.md index 12a8349d6a8..307eda54295 100644 --- a/.github/agents/dynamo-content-designer.agent.md +++ b/.github/agents/dynamo-content-designer.agent.md @@ -3,22 +3,10 @@ name: Dynamo Content Designer description: Technical writing specialist for Dynamo product documentation, blog posts, tutorials, educational content, release notes, and release documentation. Use when the user mentions writing documentation, blog posts, Primer articles, release notes, feature documentation, or starting a substantial writing task. --- -# Dynamo Content Designer - -This is a thin compatibility wrapper for the canonical skill. - -Canonical source of truth: -- .agents/skills/dynamo-content-designer/SKILL.md - -Usage guidance: -- Apply the full instructions from the canonical skill file above. -- If this wrapper and the canonical skill ever differ, the canonical skill wins. - -Maintenance note: -- Keep this file lightweight to avoid drift across tools (Copilot/Cursor/Claude). +[Dynamo Content Designer](../../.claude/skills/dynamo-content-designer/SKILL.md) diff --git a/.github/agents/dynamo-dotnet-expert.agent.md b/.github/agents/dynamo-dotnet-expert.agent.md index 8c828e82df5..1670dc0f0ce 100644 --- a/.github/agents/dynamo-dotnet-expert.agent.md +++ b/.github/agents/dynamo-dotnet-expert.agent.md @@ -3,22 +3,10 @@ name: Dynamo dotNet Expert description: Write and review C#/.NET code in Dynamo following Dynamo coding standards, modern C# patterns, and repo conventions. Use this skill whenever writing C# code, reviewing a PR diff, designing types, managing PublicAPI surface files, choosing patterns, making performance decisions, or refactoring in the Dynamo codebase. Also use when asking about NUnit testing, async patterns, error handling, immutability, or security in Dynamo. --- -# Dynamo dotNet Expert - -This is a thin compatibility wrapper for the canonical skill. - -Canonical source of truth: -- .agents/skills/dynamo-dotnet-expert/SKILL.md - -Usage guidance: -- Apply the full instructions from the canonical skill file above. -- If this wrapper and the canonical skill ever differ, the canonical skill wins. - -Maintenance note: -- Keep this file lightweight to avoid drift across tools (Copilot/Cursor/Claude). +[Dynamo dotNet Expert](../../.claude/skills/dynamo-dotnet-expert/SKILL.md) diff --git a/.github/agents/dynamo-dotnet-janitor.agent.md b/.github/agents/dynamo-dotnet-janitor.agent.md index fb06f4a8619..2b5c091b3ac 100644 --- a/.github/agents/dynamo-dotnet-janitor.agent.md +++ b/.github/agents/dynamo-dotnet-janitor.agent.md @@ -3,22 +3,10 @@ name: Dynamo dotNET Janitor description: Perform janitorial tasks on C#/.NET code including cleanup, modernization, and tech debt remediation. --- -# Dynamo dotNET Janitor - -This is a thin compatibility wrapper for the canonical skill. - -Canonical source of truth: -- .agents/skills/dynamo-dotnet-janitor/SKILL.md - -Usage guidance: -- Apply the full instructions from the canonical skill file above. -- If this wrapper and the canonical skill ever differ, the canonical skill wins. - -Maintenance note: -- Keep this file lightweight to avoid drift across tools (Copilot/Cursor/Claude). +[Dynamo dotNET Janitor](../../.claude/skills/dynamo-dotnet-janitor/SKILL.md) diff --git a/.github/agents/dynamo-ecosystem-reviewer.agent.md b/.github/agents/dynamo-ecosystem-reviewer.agent.md index 34bb62edcf5..7b21b62542c 100644 --- a/.github/agents/dynamo-ecosystem-reviewer.agent.md +++ b/.github/agents/dynamo-ecosystem-reviewer.agent.md @@ -3,22 +3,10 @@ name: Dynamo Ecosystem Reviewer description: Reviews code changes for compatibility with the broader Dynamo ecosystem. Applies known platform constraints — cross-platform portability, service compatibility, thread safety — across Dynamo's multiple repos. --- -# Dynamo Ecosystem Reviewer - -This is a thin compatibility wrapper for the canonical skill. - -Canonical source of truth: -- .agents/skills/dynamo-ecosystem-reviewer/SKILL.md - -Usage guidance: -- Apply the full instructions from the canonical skill file above. -- If this wrapper and the canonical skill ever differ, the canonical skill wins. - -Maintenance note: -- Keep this file lightweight to avoid drift across tools (Copilot/Cursor/Claude). +[Dynamo Ecosystem Reviewer](../../.claude/skills/dynamo-ecosystem-reviewer/SKILL.md) diff --git a/.github/agents/dynamo-jira-ticket.agent.md b/.github/agents/dynamo-jira-ticket.agent.md index 57e65498622..4452322983b 100644 --- a/.github/agents/dynamo-jira-ticket.agent.md +++ b/.github/agents/dynamo-jira-ticket.agent.md @@ -3,22 +3,10 @@ name: Dynamo Jira Ticket description: Create structured Jira tickets for Dynamo from bug reports, failing tests, or feature requests. Use this skill whenever writing a Jira ticket, triaging a bug, turning a vague issue into an actionable ticket, or writing acceptance criteria. Also use when the user mentions "file a ticket", "write a bug report", or "create a Jira issue" for Dynamo. --- -# Dynamo Jira Ticket - -This is a thin compatibility wrapper for the canonical skill. - -Canonical source of truth: -- .agents/skills/dynamo-jira-ticket/SKILL.md - -Usage guidance: -- Apply the full instructions from the canonical skill file above. -- If this wrapper and the canonical skill ever differ, the canonical skill wins. - -Maintenance note: -- Keep this file lightweight to avoid drift across tools (Copilot/Cursor/Claude). +[Dynamo Jira Ticket](../../.claude/skills/dynamo-jira-ticket/SKILL.md) diff --git a/.github/agents/dynamo-onboarding.agent.md b/.github/agents/dynamo-onboarding.agent.md index 48e4e2c416c..65080bfcf6f 100644 --- a/.github/agents/dynamo-onboarding.agent.md +++ b/.github/agents/dynamo-onboarding.agent.md @@ -3,22 +3,10 @@ name: Dynamo Onboarding description: Navigate the Dynamo codebase and produce architecture briefings. Use this skill when learning Dynamo for the first time, when you get a Jira ticket and don't know where to start, when you need to understand how Dynamo's architecture fits together, or when onboarding a teammate. Also use for questions like "where does node evaluation happen?" or "how does the DesignScript engine work?" --- -# Dynamo Onboarding - -This is a thin compatibility wrapper for the canonical skill. - -Canonical source of truth: -- .agents/skills/dynamo-onboarding/SKILL.md - -Usage guidance: -- Apply the full instructions from the canonical skill file above. -- If this wrapper and the canonical skill ever differ, the canonical skill wins. - -Maintenance note: -- Keep this file lightweight to avoid drift across tools (Copilot/Cursor/Claude). +[Dynamo Onboarding](../../.claude/skills/dynamo-onboarding/SKILL.md) diff --git a/.github/agents/dynamo-pr-description.agent.md b/.github/agents/dynamo-pr-description.agent.md index ed982eee1f6..6531640f398 100644 --- a/.github/agents/dynamo-pr-description.agent.md +++ b/.github/agents/dynamo-pr-description.agent.md @@ -3,22 +3,10 @@ name: Dynamo PR Description description: Generate PR descriptions for Dynamo that align with the team template section names and order. Use this skill whenever writing a pull request description, cleaning up a PR body, or generating a review-ready summary from a diff in the Dynamo repo. Also use when the user says "write a PR", "PR description", or "prep this for review." --- -# Dynamo PR Description - -This is a thin compatibility wrapper for the canonical skill. - -Canonical source of truth: -- .agents/skills/dynamo-pr-description/SKILL.md - -Usage guidance: -- Apply the full instructions from the canonical skill file above. -- If this wrapper and the canonical skill ever differ, the canonical skill wins. - -Maintenance note: -- Keep this file lightweight to avoid drift across tools (Copilot/Cursor/Claude). +[Dynamo PR Description](../../.claude/skills/dynamo-pr-description/SKILL.md) diff --git a/.github/agents/dynamo-skill-writer.agent.md b/.github/agents/dynamo-skill-writer.agent.md index 42b5ef0d82f..dada96d5e0f 100644 --- a/.github/agents/dynamo-skill-writer.agent.md +++ b/.github/agents/dynamo-skill-writer.agent.md @@ -1,24 +1,12 @@ --- name: Dynamo Skill Writer -description: Author and maintain Dynamo agent skills. Use this skill whenever creating a new skill in .agents/skills/, updating an existing skill, fixing drift between canonical skills and Copilot/Cursor/Claude wrappers, or asking how to write effective skill instructions for the Dynamo repo. +description: Author and maintain Dynamo agent skills. Use this skill whenever creating a new skill in .claude/skills/, updating an existing skill, fixing drift between canonical skills and Copilot/Cursor/Claude wrappers, or asking how to write effective skill instructions for the Dynamo repo. --- -# Dynamo Skill Writer - -This is a thin compatibility wrapper for the canonical skill. - -Canonical source of truth: -- .agents/skills/dynamo-skill-writer/SKILL.md - -Usage guidance: -- Apply the full instructions from the canonical skill file above. -- If this wrapper and the canonical skill ever differ, the canonical skill wins. - -Maintenance note: -- Keep this file lightweight to avoid drift across tools (Copilot/Cursor/Claude). +[Dynamo Skill Writer](../../.claude/skills/dynamo-skill-writer/SKILL.md) diff --git a/.github/agents/dynamo-unit-testing.agent.md b/.github/agents/dynamo-unit-testing.agent.md index 3a7d39b657f..57665801c41 100644 --- a/.github/agents/dynamo-unit-testing.agent.md +++ b/.github/agents/dynamo-unit-testing.agent.md @@ -3,22 +3,10 @@ name: Dynamo Unit Testing description: Write comprehensive NUnit tests for the Dynamo codebase following Dynamo testing patterns, conventions, and architectural constraints. Use this skill when writing test methods, test classes, setting up test infrastructure, mocking dependencies, testing with .dyn files, or reviewing test code in Dynamo. --- -# Dynamo Unit Testing - -This is a thin compatibility wrapper for the canonical skill. - -Canonical source of truth: -- .agents/skills/dynamo-unit-testing/SKILL.md - -Usage guidance: -- Apply the full instructions from the canonical skill file above. -- If this wrapper and the canonical skill ever differ, the canonical skill wins. - -Maintenance note: -- Keep this file lightweight to avoid drift across tools (Copilot/Cursor/Claude). +[Dynamo Unit Testing](../../.claude/skills/dynamo-unit-testing/SKILL.md) diff --git a/.github/agents/dynamo-ux-designer.agent.md b/.github/agents/dynamo-ux-designer.agent.md index 6b603a7cc0e..7ef4bd6e133 100644 --- a/.github/agents/dynamo-ux-designer.agent.md +++ b/.github/agents/dynamo-ux-designer.agent.md @@ -3,22 +3,10 @@ name: Dynamo UX Designer description: Plans UX flows, maps product needs to Weave Design System components, and generates structured Figma mockups using Autodesk Weave libraries. Use when the user requests UI components, pages, or applications; mentions forms, dashboards, landing pages, or modals; asks to design, build, or create interfaces; or wants to improve existing UI/UX. Aligns with Weave governance, tokens, variants, and AI/Assistant standards. --- -# Dynamo UX Designer - -This is a thin compatibility wrapper for the canonical skill. - -Canonical source of truth: -- .agents/skills/dynamo-ux-designer/SKILL.md - -Usage guidance: -- Apply the full instructions from the canonical skill file above. -- If this wrapper and the canonical skill ever differ, the canonical skill wins. - -Maintenance note: -- Keep this file lightweight to avoid drift across tools (Copilot/Cursor/Claude). +[Dynamo UX Designer](../../.claude/skills/dynamo-ux-designer/SKILL.md) diff --git a/.github/agents/dynamo-webview-component-scaffold.agent.md b/.github/agents/dynamo-webview-component-scaffold.agent.md index 9b884f78fcb..169094ad3f1 100644 --- a/.github/agents/dynamo-webview-component-scaffold.agent.md +++ b/.github/agents/dynamo-webview-component-scaffold.agent.md @@ -3,22 +3,10 @@ name: Dynamo WebView Component Scaffold description: Scaffolds a new Dynamo package repo that hosts a view extension with a WebView2-embedded React frontend. Use when setting up a new repo following the Switchboard pattern — Dynamo package structure, build pipeline, system tests, and bidirectional C#/TypeScript messaging. --- -# Dynamo WebView Component Scaffold - -This is a thin compatibility wrapper for the canonical skill. - -Canonical source of truth: -- .agents/skills/dynamo-webview-component-scaffold/SKILL.md - -Usage guidance: -- Apply the full instructions from the canonical skill file above. -- If this wrapper and the canonical skill ever differ, the canonical skill wins. - -Maintenance note: -- Keep this file lightweight to avoid drift across tools (Copilot/Cursor/Claude). +[Dynamo WebView Component Scaffold](../../.claude/skills/dynamo-webview-component-scaffold/SKILL.md) diff --git a/.github/copilot-instructions.md b/.github/copilot-instructions.md index 193f52d7ee4..9e335f48fec 100644 --- a/.github/copilot-instructions.md +++ b/.github/copilot-instructions.md @@ -210,10 +210,10 @@ Alert contributors if changes include: ## Agent Skills and Templates -For detailed task workflows, rules, and templates, see `.agents/README.md`: +For detailed task workflows, rules, and templates, see `.claude/README.md`: -- **Skills**: each in `.agents/skills//SKILL.md` -- dynamo-codebase-patterns, dynamo-content-designer, dynamo-dotnet-expert, dynamo-dotnet-janitor, dynamo-ecosystem-reviewer, dynamo-onboarding, dynamo-pr-description, dynamo-jira-ticket, dynamo-skill-writer, dynamo-unit-testing, dynamo-ux-designer, dynamo-webview-component-scaffold -- **Rules**: `.agents/rules/` -- dynamo-core-rules +- **Skills**: each in `.claude/skills//SKILL.md` -- dynamo-codebase-patterns, dynamo-content-designer, dynamo-dotnet-expert, dynamo-dotnet-janitor, dynamo-ecosystem-reviewer, dynamo-onboarding, dynamo-pr-description, dynamo-jira-ticket, dynamo-skill-writer, dynamo-unit-testing, dynamo-ux-designer, dynamo-webview-component-scaffold +- **Rules**: `.claude/rules/` -- dynamo-core-rules - **Templates**: bundled inside skill folders as `template.md` (Jira) ## Important Documentation diff --git a/.github/scripts/sync_agent_wrappers.ps1 b/.github/scripts/sync_agent_wrappers.ps1 index cab85d49f26..4f012a611d2 100644 --- a/.github/scripts/sync_agent_wrappers.ps1 +++ b/.github/scripts/sync_agent_wrappers.ps1 @@ -1,8 +1,8 @@ <# -Synchronizes and validates generated Copilot agent wrapper files. +Synchronizes and validates generated Copilot agent wrapper files in .github/agents/. Modes: -- default: regenerate mapped wrappers in .github/agents from canonical skills in .agents/skills +- default: regenerate mapped wrappers in .github/agents from canonical skills in .claude/skills - -Check: validate mapped wrappers exist and match generated output, then detect orphan generated wrappers - -Report: print summary counters; does not change pass/fail behavior #> @@ -21,18 +21,18 @@ $githubAgentsDir = Join-Path $repoRoot ".github/agents" # List of canonical skills to generate wrappers for $canonicalSkills = @( - ".agents/skills/dynamo-codebase-patterns/SKILL.md", - ".agents/skills/dynamo-content-designer/SKILL.md", - ".agents/skills/dynamo-dotnet-expert/SKILL.md", - ".agents/skills/dynamo-dotnet-janitor/SKILL.md", - ".agents/skills/dynamo-ecosystem-reviewer/SKILL.md", - ".agents/skills/dynamo-onboarding/SKILL.md", - ".agents/skills/dynamo-pr-description/SKILL.md", - ".agents/skills/dynamo-jira-ticket/SKILL.md", - ".agents/skills/dynamo-skill-writer/SKILL.md", - ".agents/skills/dynamo-unit-testing/SKILL.md", - ".agents/skills/dynamo-ux-designer/SKILL.md", - ".agents/skills/dynamo-webview-component-scaffold/SKILL.md" + ".claude/skills/dynamo-codebase-patterns/SKILL.md", + ".claude/skills/dynamo-content-designer/SKILL.md", + ".claude/skills/dynamo-dotnet-expert/SKILL.md", + ".claude/skills/dynamo-dotnet-janitor/SKILL.md", + ".claude/skills/dynamo-ecosystem-reviewer/SKILL.md", + ".claude/skills/dynamo-onboarding/SKILL.md", + ".claude/skills/dynamo-pr-description/SKILL.md", + ".claude/skills/dynamo-jira-ticket/SKILL.md", + ".claude/skills/dynamo-skill-writer/SKILL.md", + ".claude/skills/dynamo-unit-testing/SKILL.md", + ".claude/skills/dynamo-ux-designer/SKILL.md", + ".claude/skills/dynamo-webview-component-scaffold/SKILL.md" ) function Get-SkillName { @@ -93,28 +93,21 @@ function New-WrapperContent { [string]$name, [string]$description, [string]$title, - [string]$canonicalPath + [string]$canonicalPath, + [string]$wrapperRelativePath ) + # Compute a link path relative to the wrapper file so GitHub resolves it correctly. + $wrapperDir = Split-Path -Parent $wrapperRelativePath + $linkPath = [System.IO.Path]::GetRelativePath($wrapperDir, $canonicalPath).Replace("\", "/") + @" --- name: $name description: $description --- -# $title - -This is a thin compatibility wrapper for the canonical skill. - -Canonical source of truth: -- $canonicalPath - -Usage guidance: -- Apply the full instructions from the canonical skill file above. -- If this wrapper and the canonical skill ever differ, the canonical skill wins. - -Maintenance note: -- Keep this file lightweight to avoid drift across tools (Copilot/Cursor/Claude). +[$title]($linkPath)