Syncs HARNESS.md Context and Constraints sections to Cursor (.cursor/rules/), Copilot, and Windsurf convention files for consistent rules across AI coding tools.
npx claudepluginhub habitat-thinking/ai-literacy-superpowers --plugin ai-literacy-superpowersThis skill uses the workspace's default tool permissions.
Teams using multiple AI coding tools hit convention drift: HARNESS.md
Guides writing enforceable conventions, stack declarations, and context for HARNESS.md to help LLMs follow project standards and aid team onboarding.
Guides authoring .claude/rules/*.md files for auto-applied, file-pattern-scoped constraints on code conventions, quality standards, and project-specific guidance.
Generates or updates CLAUDE.md/AGENTS.md files for AI coding agents via project scanning and interactive Q&A. Supports multiple tech stacks, preserves customizations.
Share bugs, ideas, or general feedback.
Teams using multiple AI coding tools hit convention drift: HARNESS.md declares the project's conventions and constraints, but Cursor, Copilot, and Windsurf each have their own convention file format. Without sync, those tools operate blind — or worse, with stale copies of rules that were updated in HARNESS.md weeks ago.
This skill reads the Context and Constraints sections of HARNESS.md and generates the corresponding convention files for each supported tool. HARNESS.md is the single source of truth. Sync is one-way only: HARNESS.md drives the other files. No tool-specific file feeds back into HARNESS.md.
| HARNESS.md Section | Target Content |
|---|---|
| Context > Stack | Tool description / context block — languages, build system, test framework |
| Context > Conventions | Convention rules — naming, file structure, error handling, documentation |
| Constraints (each entry) | One rule block per constraint with enforcement level and scope |
Constraint Scope field | Cursor glob pattern (falls back to **/* when Scope is absent) |
Sections outside Context and Constraints (Garbage Collection, Status) are not synced — they are harness-internal and have no equivalent in other tools.
Invoke via the slash command:
/convention-sync
Or ask the agent directly: "Sync my HARNESS.md conventions to Cursor, Copilot, and Windsurf."
The agent will:
Generates two files in .cursor/rules/:
.cursor/rules/conventions.mdcContains the Context section from HARNESS.md. Frontmatter format:
---
description: Project conventions synced from HARNESS.md
globs: **/*
alwaysApply: true
---
# Project Conventions
## Stack
- Primary languages: Go 1.22
- Build system: make
...
## Conventions
- Naming: snake_case for files, PascalCase for types
...
.cursor/rules/constraints.mdcContains one rule block per constraint. Each constraint becomes a
section with its enforcement level and scope. The globs frontmatter
field is set from the constraint's Scope field if present, otherwise
defaults to **/*.
---
description: Project constraints synced from HARNESS.md
globs: **/*
alwaysApply: true
---
# Project Constraints
## Consistent formatting
- Rule: All source files must pass the project's configured formatter
without changes
- Enforcement: unverified
- Scope: commit
## No secrets in source
- Rule: No API keys, tokens, passwords, or private keys may appear
in committed source files
- Enforcement: deterministic
- Scope: commit
Generates a single flat markdown file:
.github/copilot-instructions.mdCombines Context and Constraints into one document. No frontmatter — Copilot reads plain markdown.
# Project Conventions
These conventions are synced from HARNESS.md. Do not edit this file
directly — run `/convention-sync` to regenerate.
## Stack
- Primary languages: Go 1.22
...
## Conventions
- Naming: snake_case for files, PascalCase for types
...
## Constraints
### Consistent formatting
- Rule: All source files must pass the project's configured formatter
without changes
- Enforcement: unverified
- Scope: commit
### No secrets in source
- Rule: No API keys, tokens, passwords, or private keys may appear
in committed source files
- Enforcement: deterministic
- Scope: commit
Generates two files in .windsurf/rules/:
.windsurf/rules/conventions.mdSame content structure as the Cursor conventions file but without frontmatter globs (Windsurf does not support glob scoping).
# Project Conventions
These conventions are synced from HARNESS.md. Do not edit this file
directly — run `/convention-sync` to regenerate.
## Stack
- Primary languages: Go 1.22
...
## Conventions
- Naming: snake_case for files, PascalCase for types
...
.windsurf/rules/constraints.mdSame content structure as the Cursor constraints file but without frontmatter.
# Project Constraints
These constraints are synced from HARNESS.md. Do not edit this file
directly — run `/convention-sync` to regenerate.
## Consistent formatting
- Rule: All source files must pass the project's configured formatter
without changes
- Enforcement: unverified
- Scope: commit
When a target file already exists:
HARNESS.md always wins. The target files are generated output. Any manual edits to them will be overwritten on the next sync unless the user explicitly skips the file. The correct workflow for adding tool-specific rules that do not belong in HARNESS.md is to create a separate rule file that the sync does not manage.
After generating all files, spot-check that every constraint from HARNESS.md appears in each output file:
If a constraint is missing from any output, the generation has a bug. Do not silently skip constraints.