From d62002dbca487fc45691e1a771a7b6b5a27e1cd6 Mon Sep 17 00:00:00 2001 From: Aabishkar KC Date: Thu, 30 Apr 2026 16:54:12 -0400 Subject: [PATCH 1/4] DYN-10455 Update agent skills --- .agents/README.md | 159 ------------------ .claude/README.md | 79 +++++++++ .../rules/dynamo-core-rules.md | 0 .claude/settings.json | 1 + .../skills/dynamo-codebase-patterns/SKILL.md | 0 .../patterns/README.md | 0 .../patterns/dp-001-register-all-ports.md | 0 .../dp-002-raises-modification-events.md | 0 .../dp-003-dynamowebview2-init-sequence.md | 0 .../dp-006-asynctask-two-phase-init.md | 0 ...dp-007-task-completion-scheduler-thread.md | 0 .../dp-008-viewextension-lifecycle.md | 0 .../patterns/dp-009-workspace-type-guard.md | 0 .../patterns/dp-010-keepreference-ffi.md | 0 .../dp-011-arbitrary-dimension-array.md | 0 .../dp-012-dispose-derived-geometry.md | 0 .../dp-013-isvisibleindynamolibrary.md | 0 .../patterns/dp-014-asynctask-canmergewith.md | 0 .../dp-015-property-change-manager.md | 0 .../skills/dynamo-content-designer/SKILL.md | 0 .../assets/blog-posts.md | 0 .../assets/feature-documentation.md | 0 .../assets/node-descriptions.md | 0 .../assets/node-errors-warnings.md | 0 .../assets/release-notes.md | 0 .../assets/tutorials-user-guides.md | 0 .../assets/ui-content.md | 0 .../skills/dynamo-dotnet-expert/SKILL.md | 0 .../assets/csharp-patterns.md | 0 .../assets/publicapi-guide.md | 0 .../references/quality-checklist.md | 0 .../skills/dynamo-dotnet-janitor/SKILL.md | 0 .../skills/dynamo-ecosystem-reviewer/SKILL.md | 0 .../skills/dynamo-jira-ticket/SKILL.md | 0 .../dynamo-jira-ticket/assets/template.md | 0 .../skills/dynamo-onboarding/SKILL.md | 0 .../skills/dynamo-pr-description/SKILL.md | 0 .../skills/dynamo-skill-writer/SKILL.md | 45 ++--- .../skills/dynamo-unit-testing/SKILL.md | 0 .../assets/test-patterns.md | 0 .../references/quality-checklist.md | 0 .../skills/dynamo-ux-designer/SKILL.md | 0 .../SKILL.md | 0 .../agents/dynamo-codebase-patterns.agent.md | 16 +- .../agents/dynamo-content-designer.agent.md | 16 +- .github/agents/dynamo-dotnet-expert.agent.md | 16 +- .github/agents/dynamo-dotnet-janitor.agent.md | 16 +- .../agents/dynamo-ecosystem-reviewer.agent.md | 16 +- .github/agents/dynamo-jira-ticket.agent.md | 16 +- .github/agents/dynamo-onboarding.agent.md | 16 +- .github/agents/dynamo-pr-description.agent.md | 16 +- .github/agents/dynamo-skill-writer.agent.md | 18 +- .github/agents/dynamo-unit-testing.agent.md | 16 +- .github/agents/dynamo-ux-designer.agent.md | 16 +- ...dynamo-webview-component-scaffold.agent.md | 16 +- .github/copilot-instructions.md | 6 +- .github/scripts/sync_agent_wrappers.ps1 | 42 ++--- .gitignore | 19 ++- .vscode/extensions.json | 5 + AGENTS.md | 6 +- 60 files changed, 170 insertions(+), 386 deletions(-) delete mode 100644 .agents/README.md create mode 100644 .claude/README.md rename {.agents => .claude}/rules/dynamo-core-rules.md (100%) create mode 100644 .claude/settings.json rename {.agents => .claude}/skills/dynamo-codebase-patterns/SKILL.md (100%) rename {.agents => .claude}/skills/dynamo-codebase-patterns/patterns/README.md (100%) rename {.agents => .claude}/skills/dynamo-codebase-patterns/patterns/dp-001-register-all-ports.md (100%) rename {.agents => .claude}/skills/dynamo-codebase-patterns/patterns/dp-002-raises-modification-events.md (100%) rename {.agents => .claude}/skills/dynamo-codebase-patterns/patterns/dp-003-dynamowebview2-init-sequence.md (100%) rename {.agents => .claude}/skills/dynamo-codebase-patterns/patterns/dp-006-asynctask-two-phase-init.md (100%) rename {.agents => .claude}/skills/dynamo-codebase-patterns/patterns/dp-007-task-completion-scheduler-thread.md (100%) rename {.agents => .claude}/skills/dynamo-codebase-patterns/patterns/dp-008-viewextension-lifecycle.md (100%) rename {.agents => .claude}/skills/dynamo-codebase-patterns/patterns/dp-009-workspace-type-guard.md (100%) rename {.agents => .claude}/skills/dynamo-codebase-patterns/patterns/dp-010-keepreference-ffi.md (100%) rename {.agents => .claude}/skills/dynamo-codebase-patterns/patterns/dp-011-arbitrary-dimension-array.md (100%) rename {.agents => .claude}/skills/dynamo-codebase-patterns/patterns/dp-012-dispose-derived-geometry.md (100%) rename {.agents => .claude}/skills/dynamo-codebase-patterns/patterns/dp-013-isvisibleindynamolibrary.md (100%) rename {.agents => .claude}/skills/dynamo-codebase-patterns/patterns/dp-014-asynctask-canmergewith.md (100%) rename {.agents => .claude}/skills/dynamo-codebase-patterns/patterns/dp-015-property-change-manager.md (100%) rename {.agents => .claude}/skills/dynamo-content-designer/SKILL.md (100%) rename {.agents => .claude}/skills/dynamo-content-designer/assets/blog-posts.md (100%) rename {.agents => .claude}/skills/dynamo-content-designer/assets/feature-documentation.md (100%) rename {.agents => .claude}/skills/dynamo-content-designer/assets/node-descriptions.md (100%) rename {.agents => .claude}/skills/dynamo-content-designer/assets/node-errors-warnings.md (100%) rename {.agents => .claude}/skills/dynamo-content-designer/assets/release-notes.md (100%) rename {.agents => .claude}/skills/dynamo-content-designer/assets/tutorials-user-guides.md (100%) rename {.agents => .claude}/skills/dynamo-content-designer/assets/ui-content.md (100%) rename {.agents => .claude}/skills/dynamo-dotnet-expert/SKILL.md (100%) rename {.agents => .claude}/skills/dynamo-dotnet-expert/assets/csharp-patterns.md (100%) rename {.agents => .claude}/skills/dynamo-dotnet-expert/assets/publicapi-guide.md (100%) rename {.agents => .claude}/skills/dynamo-dotnet-expert/references/quality-checklist.md (100%) rename {.agents => .claude}/skills/dynamo-dotnet-janitor/SKILL.md (100%) rename {.agents => .claude}/skills/dynamo-ecosystem-reviewer/SKILL.md (100%) rename {.agents => .claude}/skills/dynamo-jira-ticket/SKILL.md (100%) rename {.agents => .claude}/skills/dynamo-jira-ticket/assets/template.md (100%) rename {.agents => .claude}/skills/dynamo-onboarding/SKILL.md (100%) rename {.agents => .claude}/skills/dynamo-pr-description/SKILL.md (100%) rename {.agents => .claude}/skills/dynamo-skill-writer/SKILL.md (82%) rename {.agents => .claude}/skills/dynamo-unit-testing/SKILL.md (100%) rename {.agents => .claude}/skills/dynamo-unit-testing/assets/test-patterns.md (100%) rename {.agents => .claude}/skills/dynamo-unit-testing/references/quality-checklist.md (100%) rename {.agents => .claude}/skills/dynamo-ux-designer/SKILL.md (100%) rename {.agents => .claude}/skills/dynamo-webview-component-scaffold/SKILL.md (100%) create mode 100644 .vscode/extensions.json 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..42d01e51fdb --- /dev/null +++ b/.claude/README.md @@ -0,0 +1,79 @@ +# Dynamo Claude Configuration + +Skills, rules, and subagents 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/ +├── skills/ # Canonical agent skills (agentskills.io format) +│ └── / +│ └── SKILL.md +├── rules/ # Always-on coding rules +│ └── dynamo-core-rules.md +├── agents/ # Subagents (specialized, with own tools/context) +│ └── security-analyzer.md +└── README.md # This file +``` + +## Skills + +Skills are reusable prompts following the [agentskills.io](https://agentskills.io/specification) format. +In Claude Code they are invoked with `/skill-name` or auto-triggered by description. +To upload to claude.com, ZIP the skill directory and upload via Settings > Capabilities. + +| Skill | When to use | +|-------|-------------| +| [dynamo-codebase-patterns](skills/dynamo-codebase-patterns/SKILL.md) | Discovering and enforcing non-obvious Dynamo structural patterns | +| [dynamo-content-designer](skills/dynamo-content-designer/SKILL.md) | Writing docs, tutorials, release notes, and user-facing technical content | +| [dynamo-dotnet-expert](skills/dynamo-dotnet-expert/SKILL.md) | Writing or reviewing C#/.NET code, testing, PublicAPI management | +| [dynamo-dotnet-janitor](skills/dynamo-dotnet-janitor/SKILL.md) | Janitorial C#/.NET cleanup, modernization, and tech debt remediation | +| [dynamo-ecosystem-reviewer](skills/dynamo-ecosystem-reviewer/SKILL.md) | Reviewing changes for ecosystem compatibility and platform constraints | +| [dynamo-onboarding](skills/dynamo-onboarding/SKILL.md) | Learning Dynamo codebase architecture, finding where to start on tickets | +| [dynamo-pr-description](skills/dynamo-pr-description/SKILL.md) | Writing PR descriptions matching the Dynamo template | +| [dynamo-jira-ticket](skills/dynamo-jira-ticket/SKILL.md) | Creating or refining Jira tickets from bugs, test failures, or feature requests | +| [dynamo-skill-writer](skills/dynamo-skill-writer/SKILL.md) | Authoring/updating skills and keeping Copilot wrappers in sync | +| [dynamo-unit-testing](skills/dynamo-unit-testing/SKILL.md) | Writing NUnit tests following Dynamo patterns | +| [dynamo-ux-designer](skills/dynamo-ux-designer/SKILL.md) | Planning UX flows and producing Weave-aligned interface designs | +| [dynamo-webview-component-scaffold](skills/dynamo-webview-component-scaffold/SKILL.md) | Scaffolding new Dynamo WebView2 view-extension package repositories | + +## Rules + +Rules in `rules/` are always-on guardrails applied across all sessions. + +| Rule | Scope | +|------|-------| +| [dynamo-core-rules](rules/dynamo-core-rules.md) | C#/.NET coding standards, NUnit, PublicAPI, security, quality checks | + +## Subagents + +Subagents in `agents/` are specialized assistants with their own tools and context. + +| Subagent | Purpose | +|---------|---------| +| [security-analyzer](agents/security-analyzer.md) | Deep security analysis for C#/.NET and Dynamo-specific vulnerability patterns | + +## 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/` | +| **claude.com** | Upload ZIP of skill directory via Settings > Capabilities | +| **Copilot (VS Code)** | Natively from `.claude/agents/` (Claude format) **and** `.github/agents/` (generated wrappers) | +| **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 100% rename from .agents/skills/dynamo-dotnet-expert/SKILL.md rename to .claude/skills/dynamo-dotnet-expert/SKILL.md 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 100% rename from .agents/skills/dynamo-jira-ticket/SKILL.md rename to .claude/skills/dynamo-jira-ticket/SKILL.md 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 100% rename from .agents/skills/dynamo-onboarding/SKILL.md rename to .claude/skills/dynamo-onboarding/SKILL.md diff --git a/.agents/skills/dynamo-pr-description/SKILL.md b/.claude/skills/dynamo-pr-description/SKILL.md similarity index 100% rename from .agents/skills/dynamo-pr-description/SKILL.md rename to .claude/skills/dynamo-pr-description/SKILL.md 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 100% rename from .agents/skills/dynamo-unit-testing/SKILL.md rename to .claude/skills/dynamo-unit-testing/SKILL.md 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..80516c4b85a 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..9606443f41c 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..c78c403f239 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..48ae56b5335 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..f504ca219eb 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..cd083391aed 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..d95d4347669 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..6c3d4b9723e 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..308a06d2ad3 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..7851a396296 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..c0b987b31d0 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..fb62086ca43 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..6ec827b9e66 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/skills/`: -- **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..6164a412d34 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 { @@ -102,19 +102,7 @@ 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]($canonicalPath)