@uge/payo 1.3.0 → 2.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (3) hide show
  1. package/README.md +76 -40
  2. package/dist/index.js +183 -174
  3. package/package.json +1 -1
package/README.md CHANGED
@@ -59,14 +59,15 @@ over Prisma, that handlers live in `src/routes`, that you write Vitest specs
59
59
  beside the file, or that commits follow Conventional Commits. So you re-explain
60
60
  it — in chat after chat — and still get code that ignores half of it.
61
61
 
62
- The fix is the guidance files each tool already reads (`CLAUDE.md`,
63
- `.cursorrules`, `.github/copilot-instructions.md`, `AGENTS.md`). But writing them
64
- by hand is tedious, easy to get wrong, and different for every tool. Most people
65
- never do it, or do it once and let it rot.
62
+ The fix is the guidance files agents read an `AGENTS.md` entrypoint plus
63
+ [Agent Skills](https://agentskills.io) under `.agents/skills/`. But writing them
64
+ by hand is tedious and easy to get wrong. Most people never do it, or do it once
65
+ and let it rot.
66
66
 
67
- Payo writes them for you in minutes — tailored to your actual stack,
68
- in each tool's native format so your assistant follows _your_ conventions from
69
- the first prompt instead of guessing.
67
+ Payo writes them for you in minutes — tailored to your actual stack, in one
68
+ universal layout that **every skills-compatible tool reads** (Claude Code, Codex,
69
+ Cursor, Copilot, Gemini, Antigravity, Windsurf, …) — so your assistant follows
70
+ _your_ conventions from the first prompt instead of guessing.
70
71
 
71
72
  ### Vibe coding, without the mess
72
73
 
@@ -91,7 +92,7 @@ instead of fighting it.
91
92
  - **Teams enforcing conventions** who need every contributor's assistant to
92
93
  follow the same folder structure, naming, testing, and git rules.
93
94
  - **Multi-tool users** who switch between Claude, Cursor, and Copilot and want
94
- the _same_ project guidance expressed in each tool's native format.
95
+ the _same_ project guidance in one universal layout every tool reads.
95
96
  - **Anyone bootstrapping a stack** they haven't wired up before — Payo encodes
96
97
  sensible, framework-specific defaults and can scaffold a runnable project.
97
98
 
@@ -131,9 +132,10 @@ guidance files straight into your repo.
131
132
  summary of every answer. Choose **Edit an answer** to change any response — or
132
133
  re-open a section you skipped — right from the review; dependent questions are
133
134
  re-asked automatically. Pick **Generate** when it looks right.
134
- 5. **Payo generates the guidance.** It writes each tool's files in their native
135
- format and location (see the table below). With the tool's CLI installed,
136
- files are generated in parallel by the AI; otherwise solid templates are used.
135
+ 5. **Payo generates the guidance.** It writes one universal layout that every
136
+ skills-compatible tool reads (see the table below). With an agent CLI
137
+ installed, skills are generated in parallel by the AI; otherwise solid
138
+ templates are used.
137
139
  6. **(Optional) Get a bootstrap prompt.** Payo offers to write a paste-ready
138
140
  `bootstrap-prompt.md` you hand to any LLM to scaffold a runnable project that
139
141
  honors the guidance it just generated.
@@ -144,26 +146,36 @@ guidance files straight into your repo.
144
146
 
145
147
  Payo isn't just for empty repos. Run it in an established project and it **reads
146
148
  what's already there** — `package.json`, `pyproject.toml`, `go.mod`, `Cargo.toml`,
147
- `composer.json`, lockfiles, tool configs, and the folder layout — to figure out
148
- your stack across **TypeScript/JavaScript, Python, Go, Rust, and PHP**, then pre-fills the questionnaire
149
+ `composer.json`, `*.csproj`, `pom.xml`, `build.gradle`, `Gemfile`, lockfiles, tool configs, and the folder layout — to figure out
150
+ your stack across **TypeScript/JavaScript, Python, Go, Rust, PHP, C#, Java, and Ruby**, then pre-fills the questionnaire
149
151
  from that evidence. You confirm or tweak instead of typing it all out.
150
152
 
151
153
  When detection finds a manifest, you get two quick choices:
152
154
 
153
155
  - **Work with the existing project, or start fresh?** Keep the detected answers, or
154
156
  ignore them and answer from scratch.
155
- - **Detect everything, or just the stack?** Fill in stack facts only, or also
156
- pre-fill the convention questions (folder structure and the like) that Payo can
157
- infer from your layout.
157
+ - **Detect everything, or just the stack?**
158
+ - **Detect everything** fills in the whole config with no question-by-question
159
+ prompts: stack facts and conventions are taken from what Payo detects, and any
160
+ convention it can't detect is set to a sensible recommended default. You land
161
+ straight on the review screen and edit anything that's off before generating —
162
+ everything means everything, confirmed once at the end.
163
+ - **Just the high-level stack** fills in the stack facts only and interviews you
164
+ for the convention questions (folder structure and the like).
158
165
 
159
- How detected answers are applied:
166
+ How detected answers are applied in **Just the high-level stack** mode:
160
167
 
161
168
  - **Stack facts** (language, framework, database, ORM, package manager, test
162
169
  runner, linter…) are filled in and **skipped** — they're things a manifest can
163
170
  state authoritatively, so there's nothing to ask.
164
- - **Conventions and preferences** are surfaced as **pre-filled defaults you still
165
- confirm** — a manifest can't encode intent, so Payo never silently decides these
166
- for you.
171
+ - **Conventions and preferences** are left to the interview a manifest can't
172
+ encode intent, so Payo asks rather than guessing.
173
+
174
+ **Monorepos** are detected too: Payo enumerates workspace members (pnpm / npm /
175
+ yarn / lerna, Cargo, `go.work`, Maven / Gradle), detects each package's stack, and
176
+ uses the real app stack as the primary answers instead of the near-empty root
177
+ manifest. The generated guidance gains a **Workspace Packages** list and monorepo
178
+ conventions.
167
179
 
168
180
  Detection runs deterministically from your files first. When the chosen AI tool's
169
181
  CLI is installed, an **optional second pass** uses **your own** assistant to fill
@@ -174,25 +186,48 @@ deterministic result stands on its own.
174
186
 
175
187
  ## What gets generated
176
188
 
177
- Each tool gets files in its own native format and location:
189
+ One universal layout, whichever agent CLI you pick no per-tool formats:
190
+
191
+ | Path | What it is |
192
+ | ------------------------------- | ------------------------------------------------------------------ |
193
+ | `AGENTS.md` | The entrypoint most tools read natively — your project's base rules |
194
+ | `.agents/skills/<id>/SKILL.md` | One [Agent Skill](https://agentskills.io) per topic, spec frontmatter |
195
+ | `CLAUDE.md` | A one-line `@AGENTS.md` import shim so Claude Code picks it up |
196
+ | `.claude/skills/**` | Symlinks into `.agents/skills/` (dir copy on Windows) for Claude Code |
197
+ | `.windsurf/skills/**` | The same shim for Windsurf |
198
+
199
+ Who reads what, with no extra work:
200
+
201
+ - **Codex, Cursor, Copilot, Gemini CLI, Antigravity, Devin** → `.agents/skills/` and
202
+ `AGENTS.md` natively.
203
+ - **Claude Code** → the `CLAUDE.md` shim plus the `.claude/skills/` symlinks
204
+ (officially supported; it dedupes if it also reads the target directly).
205
+ - **Windsurf** → `AGENTS.md` plus the `.windsurf/skills/` shim.
206
+
207
+ `AGENTS.md` opens its skills index with a directive telling the agent to consult and
208
+ follow the applicable skills before writing code — so the guidance is used, not just
209
+ present.
210
+
211
+ Optionally, Payo adds a **change-audit** skill (`.agents/skills/change-audit/SKILL.md`):
212
+ if you opt in, it asks when to run — before every commit or before pushing — and the
213
+ agent uses it at that point to check your pending change against the relevant project
214
+ skills and flag anything that conflicts.
178
215
 
179
- | Tool | Files generated |
180
- | -------------------- | --------------------------------------------------------------- |
181
- | Claude (Anthropic) | `CLAUDE.md` · `.claude/skills/**` |
182
- | Cursor | `.cursorrules` · `.cursor/rules/**` |
183
- | GitHub Copilot | `.github/copilot-instructions.md` · `.github/instructions/**` |
184
- | Codex CLI | `AGENTS.md` |
185
- | Antigravity (Google) | `AGENTS.md` · `.agents/skills/**` |
186
- | Windsurf | `.windsurfrules` |
187
- | Other / generic | `AI_RULES.md` |
216
+ The question Payo asks — _"Which agent CLI should Payo use to generate content?"_ —
217
+ picks only **which installed CLI authors the content**. The output above works with
218
+ every skills-compatible tool regardless of that choice.
188
219
 
189
- > Rich AI generation needs the selected tool's CLI on your `PATH`. Without it,
190
- > Payo writes well-structured template defaults instead.
220
+ > Rich AI generation needs an agent CLI on your `PATH`. Without one, Payo writes
221
+ > well-structured template defaults into the same layout instead.
222
+ >
223
+ > Regenerating over an older Payo project? It offers to remove the retired
224
+ > per-tool files (`.cursorrules`, `.windsurfrules`, `.cursor/rules/**`,
225
+ > `.github/instructions/**`, `.github/copilot-instructions.md`, `AI_RULES.md`).
191
226
 
192
227
  ## What it asks about
193
228
 
194
- Payo understands **26 frameworks, 25 ORMs, and 16 databases** across
195
- **TypeScript/JavaScript, Python, Go, Rust, and PHP** — and tailors its follow-up
229
+ Payo understands **30 frameworks, 29 ORMs, and 17 databases** across
230
+ **TypeScript/JavaScript, Python, Go, Rust, PHP, C#, Java, and Ruby** — and tailors its follow-up
196
231
  questions to whatever you pick. Dimensions covered:
197
232
 
198
233
  - **Project** — type (frontend / backend / full-stack / CLI / script) and a short description
@@ -208,6 +243,8 @@ questions to whatever you pick. Dimensions covered:
208
243
  - **Tooling** — package manager, runtime, formatter, linter
209
244
  - **TypeScript** — `tsconfig` strictness, target, module resolution, path aliases
210
245
  - **Conventions** — folder structure, coding standards, docs, git workflow
246
+ - **Change audit** _(optional)_ — opt into a skill that checks your pending
247
+ change against the project skills before commit or push
211
248
 
212
249
  ## AI vs. template generation
213
250
 
@@ -250,13 +287,12 @@ generating what's missing. Finished runs clean the directory up automatically.
250
287
 
251
288
  Payo works today, but it's still early. Here's where it's headed:
252
289
 
253
- - **Deeper existing-project detection.** Payo already detects an established
254
- repo's stack and pre-fills the questionnaire (see
290
+ - **Deeper monorepo support.** Payo now enumerates workspace members, detects
291
+ each package's stack, and writes per-package notes into one root config (see
255
292
  [Already have a project?](#already-have-a-project-payo-detects-your-stack)).
256
- Next is making that just as sharp on **monorepos**: today detection reads the
257
- root manifest, so a workspace whose real stack lives in `apps/*` and
258
- `packages/*` underfills. Workspace-aware, multi-root detection — plus broader
259
- signal coverage — is the next step.
293
+ Next is going further: per-package skills and guidance for repos where each
294
+ workspace wants its own conventions, and workspace enumeration for the
295
+ remaining ecosystems (Python, PHP, .NET, Ruby).
260
296
  - **Broader stack coverage.** More languages, frameworks, ORMs, databases, and
261
297
  AI tools, plus deeper, more opinionated defaults for the ones already
262
298
  supported — so the guidance fits more of the ecosystem out of the box.