Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
23 changes: 12 additions & 11 deletions .agents/README.md
Original file line number Diff line number Diff line change
@@ -1,18 +1,19 @@
# `.agents/` — rules & skills

Source of truth for AI agent configuration. Cursor consumes via symlinks in `.cursor/rules/` and `.cursor/skills/`.
Source of truth for AI agent configuration. Cursor loads skills from `.agents/skills/` natively and rules via `.cursor/rules/*.mdc` → `.agents/rules/*.md` symlinks.

## Start here

| Question | Read |
| --------------------------------- | --------------------------------------------------------------------- |
| Repo-root stub (cross-tool) | [`AGENTS.md`](../AGENTS.md) |
| Where files live, symlinks | [rules/agents-first-convention.md](rules/agents-first-convention.md) |
| Tier 1 / 2 / 3 attachment modes | [rules/agents-tier-system.md](rules/agents-tier-system.md) |
| Codemap tier/pairing deltas | [skills/writing-agents-config](skills/writing-agents-config/SKILL.md) |
| Authoring new rules/skills (meta) | [`writing-great-skills`](skills/writing-great-skills/SKILL.md) |
| Past corrections | [`lessons.md`](lessons.md) |
| What exists on disk right now | `ls .agents/rules` · `ls .agents/skills` |
| Question | Read |
| -------------------------------------- | --------------------------------------------------------------------- |
| Repo-root stub (cross-tool) | [`AGENTS.md`](../AGENTS.md) |
| Where files live, rule `.mdc` symlinks | [rules/agents-first-convention.md](rules/agents-first-convention.md) |
| Tier 1 / 2 / 3 attachment modes | [rules/agents-tier-system.md](rules/agents-tier-system.md) |
| Codemap tier/pairing deltas | [skills/writing-agents-config](skills/writing-agents-config/SKILL.md) |
| Authoring new rules/skills (meta) | [`writing-great-skills`](skills/writing-great-skills/SKILL.md) |
| Unslop (always-on) | [`unslop`](skills/unslop/SKILL.md) |
| Past corrections | [`lessons.md`](lessons.md) |
| What exists on disk right now | `ls .agents/rules` · `ls .agents/skills` |

## Tier legend (summary)

Expand All @@ -37,6 +38,6 @@ Discover on disk via `ls` + the frontmatter audit in [`agents-tier-system`](rule
```text
.agents/
rules/<name>.md → .cursor/rules/<name>.mdc (symlink)
skills/<name>/SKILL.md → .cursor/skills/<name> (symlink)
skills/<name>/SKILL.md → Cursor reads in place
lessons.md → .cursor/rules/lessons.mdc (symlink)
```
15 changes: 5 additions & 10 deletions .agents/rules/agents-first-convention.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
---
description: When creating or moving rules/skills, always store the source file in .agents/ and symlink from .cursor/
description: When creating or moving rules/skills, store the source in .agents/. Rules need a .cursor/rules .mdc symlink. Skills do not — Cursor reads .agents/skills/ natively.
alwaysApply: true
---

Expand All @@ -20,24 +20,19 @@ When creating **any** new rule or skill, follow this convention:

## Skills (`SKILL.md` files)

1. Create the directory and file in `.agents/skills/<name>/SKILL.md`
2. Create a symlink in `.cursor/skills/`:

```bash
ln -s ../../.agents/skills/<name> .cursor/skills/<name>
```
Create `.agents/skills/<name>/SKILL.md` only — never start in `.cursor/skills/`. Cursor loads `.agents/skills/` natively. Do **not** symlink into `.cursor/skills/` (double-registers). If `/create-skill` writes there, move the folder to `.agents/skills/` and delete the `.cursor/` copy.

**Never** name bulk reference files `AGENTS.md` inside skill folders — use `FULL-GUIDE.md` or topic siblings.

## Why

- `.agents/` is the **source of truth** — it is IDE-agnostic and works across different AI coding tools.
- `.cursor/` only contains **symlinks** pointing back to `.agents/`.
- `.cursor/rules/` contains **`.mdc` symlinks** pointing back to `.agents/rules/`. Skills are not mirrored there.
- This keeps configuration portable and avoids duplication.

## Never

- Never place original rule/skill content directly in `.cursor/rules/` or `.cursor/skills/`.
- Never create a rule or skill without both the `.agents/` file and the `.cursor/` symlink.
- Never place original rule content directly in `.cursor/rules/`.
- Never create a rule without both the `.agents/` file and the `.cursor/rules/<name>.mdc` symlink. Skills need `.agents/` source only.

Related: [`agents-tier-system.md`](./agents-tier-system.md) · [`AGENTS.md`](../../AGENTS.md).
3 changes: 1 addition & 2 deletions .agents/rules/agents-tier-system.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,6 @@ globs:
- ".agents/rules/**"
- ".agents/skills/**"
- ".cursor/rules/**"
- ".cursor/skills/**"
alwaysApply: false
---

Expand All @@ -20,7 +19,7 @@ for f in .agents/rules/*.md .agents/lessons.md; do
done
```

**When authoring:** pick tier before writing; pair fat rules with skills; symlinks per [`agents-first-convention`](./agents-first-convention.md). Default to intent-triggered skills and a thin always-on set.
**When authoring:** pick tier before writing; pair fat rules with skills; layout per [`agents-first-convention`](./agents-first-convention.md). Default to intent-triggered skills and a thin always-on set.

## Reference

Expand Down
2 changes: 1 addition & 1 deletion .agents/rules/authoring-discipline.md
Original file line number Diff line number Diff line change
Expand Up @@ -22,4 +22,4 @@ User-requested **doc audits** may slim redundant markdown; preservation above ap
- **JSDoc as types (`.mjs`, `@ts-check`):** `@typedef`, `@param`, `@returns`, inline `@type` are the type system — keep them; apply the decision test only to prose in those blocks.
- **End-of-turn:** cut duplicate tables/narration; after doc slim → [`docs-governance`](../skills/docs-governance/SKILL.md) slimming audit.

Related: [`concise-reporting`](./concise-reporting.md) · [`docs-lifecycle-sweep`](../skills/docs-lifecycle-sweep/SKILL.md).
Related: [`concise-reporting`](./concise-reporting.md) · [`docs-lifecycle-sweep`](../skills/docs-lifecycle-sweep/SKILL.md) · [`unslop`](../skills/unslop/SKILL.md).
12 changes: 12 additions & 0 deletions .agents/rules/unslop.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
---
description: Cut AI tells from any writing. Must always apply.
alwaysApply: true
---

# Unslop (STOP)

Before sending a reply or committing prose, **read [`unslop`](../skills/unslop/SKILL.md)** and apply it.

Scan for AI patterns, rewrite in human voice, self-audit remaining tells. Depth lives in the skill, not here.

Related: [`authoring-discipline`](./authoring-discipline.md) · [`concise-reporting`](./concise-reporting.md).
2 changes: 1 addition & 1 deletion .agents/skills/agents-tier-system/SKILL.md
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@ Always-on priming: [`.agents/rules/agents-tier-system.md`](../../rules/agents-ti
1. **Decide the tier** before writing.
2. **Tier 1 needs justification** — every turn? If file/intent scoped, demote to Tier 2 or Tier 3.
3. **Tier 2 globs** — broadest meaningful scope; pair with skill when applicable.
4. **Source + symlink** per [`agents-first-convention`](../../rules/agents-first-convention.md).
4. **Layout** per [`agents-first-convention`](../../rules/agents-first-convention.md) — rules: source + `.mdc` symlink; skills: `.agents/` only.

### Adding a new skill

Expand Down
2 changes: 1 addition & 1 deletion .agents/skills/authoring-discipline/SKILL.md
Original file line number Diff line number Diff line change
Expand Up @@ -10,4 +10,4 @@ Always-on priming: [`.agents/rules/authoring-discipline.md`](../../rules/authori

Full checklists and examples: [`PROSE.md`](./PROSE.md).

Related: [`docs-governance`](../docs-governance/SKILL.md), [`docs-lifecycle-sweep`](../docs-lifecycle-sweep/SKILL.md), [`writing-great-skills`](../writing-great-skills/SKILL.md).
Related: [`docs-governance`](../docs-governance/SKILL.md), [`docs-lifecycle-sweep`](../docs-lifecycle-sweep/SKILL.md), [`writing-great-skills`](../writing-great-skills/SKILL.md), [`unslop`](../unslop/SKILL.md).
4 changes: 2 additions & 2 deletions .agents/skills/docs-governance/LIFECYCLE.md
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ Every doc in this repo lives in one of **two surface tiers** (codemap is small e
| Tier | Substrate | Examples today | Governance shape |
| ------------------------------------ | ---------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **Tier B** — repo-wide cross-cutting | `docs/` at repo root | `docs/architecture.md`, `docs/glossary.md`, `docs/roadmap.md`, `docs/plans/`, `docs/research/`, `docs/agents.md`, `docs/benchmark.md`, `docs/golden-queries.md`, `docs/packaging.md`, `docs/why-codemap.md` | Single `docs/README.md` carrying the **canonical numbered Rules** + ownership table + lifecycle prescription; cross-cutting reference docs at the root; `plans/`, `research/`, and (when needed) `audits/` substrate folders |
| **Tier 0** — per-tooling-area | `.agents/`, `.cursor/`, `scripts/` | `.agents/rules/`, `.agents/skills/`, `.cursor/rules/` (symlinks), `.cursor/skills/` (symlinks), `templates/agents/` (bundled for `codemap agents init`) | Implicit governance via [`agents-first-convention`](../../rules/agents-first-convention.md) + [`agents-tier-system`](../../rules/agents-tier-system.md); no per-area `README.md` needed; the rules + skills are themselves the docs and earn their place per § 2 below |
| **Tier 0** — per-tooling-area | `.agents/`, `.cursor/`, `scripts/` | `.agents/rules/`, `.agents/skills/`, `.cursor/rules/` (`.mdc` symlinks), `templates/agents/` (bundled for `codemap agents init`) | Implicit governance via [`agents-first-convention`](../../rules/agents-first-convention.md) + [`agents-tier-system`](../../rules/agents-tier-system.md); no per-area `README.md` needed; the rules + skills are themselves the docs and earn their place per § 2 below |

The same shared spine applies to both. The differences are what subset each tier needs.

Expand Down Expand Up @@ -177,7 +177,7 @@ When present, the repo-root `docs/README.md` documents:

`.agents/`, `.cursor/`, `scripts/`, `templates/agents/` — no per-area `README.md` needed (with the exception of `templates/agents/README.md`, which exists because the bundled templates ship to npm consumers and the README explains the consumer-vs-maintainer distinction). Governance lives in the rules + skills themselves:

- File-layout discipline → [`agents-first-convention`](../../rules/agents-first-convention.md) (`.agents/` is source of truth; `.cursor/` is symlinks)
- File-layout discipline → [`agents-first-convention`](../../rules/agents-first-convention.md) (`.agents/` is source of truth; rules also get `.cursor/rules/*.mdc` symlinks)
- Tier system for rules → [`agents-tier-system`](../../rules/agents-tier-system.md)

These rules are themselves docs; they're governed by their own existence test (do they earn their place per § 2?).
Expand Down
3 changes: 3 additions & 0 deletions .agents/skills/unslop/PROVENANCE.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
source: https://github.com/cursor/plugins
path: pstack/skills/unslop
fetched: 2026-08-19
80 changes: 80 additions & 0 deletions .agents/skills/unslop/SKILL.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,80 @@
---
name: unslop
description: Cut AI tells from any writing. Must always apply.
---

# Unslop

Edit text to remove AI patterns and add human voice.

## Process

1. Scan for the patterns below.
2. Rewrite. Preserve meaning, match intended tone.
3. Add soul (see next section).
4. Self-audit: "What makes this obviously AI generated?" Fix remaining tells.
Comment thread
coderabbitai[bot] marked this conversation as resolved.

## Adding soul

Removing patterns is half the job. Sterile, voiceless writing is just as obvious.

- **Have opinions.** React to facts instead of neutrally listing pros and cons.
- **Vary rhythm.** Short sentences. Then longer ones that take their time. Mix it up.
- **Acknowledge complexity.** "Impressive but also kind of unsettling" beats "impressive."
- **Use "I" when it fits.** First person isn't unprofessional.
- **Let some mess in.** Perfect structure looks machine-made.
- **Be specific.** Not "this is concerning" but "there's something unsettling about agents churning away at 3am."

## Patterns to detect and fix

### Content

1. **Puffery.** "pivotal moment", "testament to", "evolving landscape", "setting the stage for", "indelible mark", "deeply rooted". Cut puffery, state what happened.
2. **Name-dropping.** Listing media outlets without context. Pick one, say what was said.
3. **Superficial -ing phrases.** "highlighting...", "ensuring...", "reflecting...", "showcasing...", "fostering...". Delete or expand with real sources.
4. **Promotional language.** "nestled", "vibrant", "breathtaking", "groundbreaking", "renowned", "stunning", "must-visit". Use neutral descriptions.
5. **Vague attributions.** "Experts believe", "Industry reports suggest", "Some critics argue". Name the source or delete.
6. **Formulaic challenges.** "Despite challenges... continues to thrive." Replace with specific facts.

### Language

7. **AI vocabulary.** Additionally, crucial, delve, enduring, enhance, fostering, garner, interplay, intricate, landscape (abstract), pivotal, showcase, tapestry (abstract), testament, underscore, vibrant. Replace with plain words.
8. **Fancy ways to say "is".** "serves as", "stands as", "boasts", "features". Just say "is" or "has".
9. **"Not just X, but Y."** State the point directly instead.
10. **Rule of three.** Forcing ideas into groups of three. Use the natural number.
11. **Synonym cycling.** Protagonist, main character, central figure, hero all in one paragraph. Pick one, repeat it.
12. **False ranges.** "from X to Y" where X and Y aren't on a meaningful scale. List topics directly.

### Style

13. **Em dash overuse.** Avoid em dashes entirely. Use periods or commas only (no parentheses, no en dashes, no hyphen-as-dash substitutes). Em dashes are an AI tell, and reaching for parentheses instead just trades one tell for another. If a thought needs separation, end the sentence or use a comma.
14. **Colon overuse.** Colons are fine before a list or example. Not as mid-sentence connectors. "If you're coming from traditional automation: instead of registering event handlers, you describe conditions" adds nothing with the colon. Rewrite to let the point stand on its own without comparison framing. "Describing when the scheduler should fire works best as plain English." Same meaning, no crutch punctuation.
15. **Boldface overuse.** Don't bold every proper noun or acronym.
16. **Inline-header lists.** The tell is a bold label and colon that restates the line: "**Performance:** Performance improved...". Convert those to prose. A bold lead-in that ends in a period, names the item, and is followed by genuinely new detail ("**Schema in TypeScript.** Tables live in one file.") is fine, not a tell.
17. **Title case headings.** Use sentence case.
18. **Decorative emojis.** Remove from headings and bullets.
19. **Curly quotes.** Replace with straight quotes.

### Communication artifacts

20. **Chatbot phrases.** "I hope this helps!", "Let me know if...", "Of course!", "Certainly!", "Found the smoking gun!" Remove.
21. **Cutoff disclaimers.** "While specific details are limited..." Find sources or remove.
22. **Sycophantic tone.** "Great question! You're absolutely right!" Respond directly.

### Filler

23. **Filler phrases.** "In order to" becomes "To". "Due to the fact that" becomes "Because". "It is important to note that" gets deleted.
24. **Excessive hedging.** "could potentially possibly be argued that it might" becomes "may".
25. **Generic conclusions.** "The future looks bright." State specific plans or facts.

### Jargon

26. **Abstract metaphor nouns.** Substrate, wedge, vector, locus, vantage, nexus, primitive (as noun), harness (as metaphor), surface (as in "API surface"), bedrock, scaffolding (as metaphor), modality, paradigm, gold-plating, ratchet (as metaphor), evacuate (for moving code), endgame, north star, flywheel. These read as technical but usually have a plainer concrete word. "Substrate" becomes "base". "Wedge in" becomes "add". "Vector" becomes "way" or "method". "Gold-plating" becomes "more than the job needs". "Ratchet" becomes the mechanism's real name or "a limit that only tightens". "Evacuate" becomes "move out". "Endgame" becomes "the last phase". Pick the concrete word.

### Plain speech

27. **Say what it does, not how it feels.** "the database stays close at hand", "SQL you can read", "types that follow your schema" name a feeling. The fix names the mechanism or a number: "`.toSQL()` returns the exact string sent to the database", "a column rename fails the build". Ask what the sentence tells the reader to do or know, then write that. If you can't restate it as a concrete instruction, fact, or number, cut it. One more check: if the sentence could appear unchanged in another project's docs, it says nothing about this one. Cut it.
28. **Shorten or split dense sentences.** If the reader has to backtrack to parse a sentence, break it in two or drop clauses. One idea per sentence.
29. **Active voice.** Prefer it. Catch "is/are/was/were + past participle" and name the actor: "queries are validated" becomes "the compiler validates queries", "the file is parsed by the loader" becomes "the loader parses the file". Passive is fine only when the actor is unknown or genuinely doesn't matter.
30. **Cut adverbs, or use a stronger verb.** "runs quickly" becomes "is fast" or the number. "significantly improves" becomes the measured delta. An adverb propping up a weak verb means the verb is wrong.
31. **Prefer the plain word.** "utilize" becomes "use", "leverage" becomes "use", "facilitate" becomes "help", "numerous" becomes "many", "in the event that" becomes "if". The fancier synonym is rarely clearer.
2 changes: 1 addition & 1 deletion .agents/skills/writing-agents-config/SKILL.md
Original file line number Diff line number Diff line change
Expand Up @@ -62,7 +62,7 @@ find .agents/skills -name SKILL.md -exec sh -c 'n=$(wc -l < "$1"); [ "$n" -gt 12
- **Tier-2 attach** — `agents-tier-system` (`agents/**` + `cursor/**`); `docs-governance` (`docs/**`, `.agents/**`); `architecture-priming` when authoring structural refactors.
- **Intent-only skills** — `improve-codebase-architecture`, `domain-modeling`, `docs-lifecycle-sweep`, `diagnosing-bugs`, `tdd`, `pr-comment-fact-check`, `harden-pr`, `codemap`, `audit-pr-architecture`. No glob (no per-file tax).
- **Ship policy** — `templates/agent-content/**` is served live (CLI/MCP/HTTP); `templates/agents/**` is copied by `codemap agents init`. Consumer surfaces describe behavior only ([`consumer-surfaces`](../../rules/consumer-surfaces.md)).
- **Symlink convention** — source under `.agents/`; `.cursor/rules/<name>.mdc` and `.cursor/skills/<name>` are symlinks only.
- **Layout convention** — source under `.agents/`; rules also get `.cursor/rules/<name>.mdc` symlinks. Skills are not mirrored into `.cursor/skills/`.
- **Cross-skill links** — relative `../skill/SKILL.md` and sibling files resolve reliably in Cursor agents. Relative links inside `.agents/` are an **intentional delta**, not drift.
- **Indexer-first exploration** — skills that explore structure prefer `codemap query` over grep; the `codemap` rule is Tier 1 always-on.

Expand Down
5 changes: 5 additions & 0 deletions .changeset/cursor-native-skills.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
"@stainless-code/codemap": patch
---

Stop mirroring skills into `.cursor/skills` during `codemap agents init`. Cursor loads skills from `.agents/skills/` natively, so the extra copies double-registered.
1 change: 1 addition & 0 deletions .cursor/rules/unslop.mdc
1 change: 0 additions & 1 deletion .cursor/skills/agents-tier-system

This file was deleted.

1 change: 0 additions & 1 deletion .cursor/skills/ask-agents

This file was deleted.

1 change: 0 additions & 1 deletion .cursor/skills/audit-pr-architecture

This file was deleted.

Loading