@ramon-sg/issue-flow 0.2.0 → 0.2.2

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.
package/README.md CHANGED
@@ -2,11 +2,11 @@
2
2
 
3
3
  Flujo de trabajo de issue a PR para cualquier repo, en local y en las sesiones de Claude en la nube: nombra la rama de cada issue, crea su worktree con puertos y Docker propios, abre el PR en draft y limpia cuando se mergea. Trae las skills que usan ese flujo.
4
4
 
5
- > **Instalar en un repo:** `npx @ramon-sg/agent-kit`, que instala este flujo con sus skills, las skills generales, `claude-cloud` y `claude-repo-guard`, y los actualiza ([agent-kit](https://github.com/ramon-sg/agent-kit)). El paquete es `@ramon-sg/issue-flow` y el comando, `issue-flow`; sin el scope, `issue-flow` en npm es otro paquete.
5
+ > **Instalar en un repo:** `npx agent-kitchen`, que instala este flujo con sus skills, las skills generales, `claude-cloud` y `claude-repo-guard`, y los actualiza ([agent-kitchen](https://github.com/ramon-sg/agent-kitchen)). El paquete es `@ramon-sg/issue-flow` y el comando, `issue-flow`; sin el scope, `issue-flow` en npm es otro paquete.
6
6
 
7
7
  ## Qué va a tener
8
8
 
9
- - **`issue-flow init|doctor|upgrade`:** escribe, revisa y mueve a su versión lo que el flujo deja en el repo: `.agents/flow.json` con sus recetas, las dependencias y los hooks. Los corre `agent-kit`.
9
+ - **`issue-flow init|doctor|upgrade`:** escribe, revisa y mueve a su versión lo que el flujo deja en el repo: `.agents/flow.json` con sus recetas, las dependencias y los hooks. Los corre `agent-kitchen`.
10
10
  - **`issue-flow issue branch <n>`:** propone la rama de una issue (con Claude por defecto, o desde el título). Con `--missing`, agrega el slug de rama a todas las issues abiertas que no lo tienen.
11
11
  - **`issue-flow issue start <n>`:** crea la rama y el worktree, hace el commit inicial, abre el PR en draft, asigna la issue y abre Claude. Con `--cloud`, lo hace en una sesión en la nube.
12
12
  - **`issue-flow worktree setup|teardown|ports|cleanup|prune`:** prepara y limpia cada worktree con los pasos del repo, le da un bloque de puertos y borra los worktrees con el PR cerrado.
@@ -180,12 +180,12 @@ Es el hook `SessionStart` de Claude Code. Lo que imprime le llega a Claude como
180
180
 
181
181
  ## Lo que el flujo deja en el repo: `issue-flow init`
182
182
 
183
- `npx @ramon-sg/agent-kit` corre estos tres comandos en la versión que corresponde. Correrlos a mano sirve para probar el flujo en un repo sin lo demás.
183
+ `npx agent-kitchen` corre estos tres comandos en la versión que corresponde. Correrlos a mano sirve para probar el flujo en un repo sin lo demás.
184
184
 
185
185
  ```sh
186
186
  npx @ramon-sg/issue-flow init # pregunta cada receta y pide el OK
187
187
  npx @ramon-sg/issue-flow init --yes # sin preguntas, con las recetas que sugiere el repo
188
- npx @ramon-sg/issue-flow doctor # revisa que el repo esté como lo deja init (--json para agent-kit)
188
+ npx @ramon-sg/issue-flow doctor # revisa que el repo esté como lo deja init (--json para agent-kitchen)
189
189
  npx @ramon-sg/issue-flow@<versión> upgrade # mueve el repo a esa versión (--dry-run)
190
190
  ```
191
191
 
@@ -197,7 +197,7 @@ npx @ramon-sg/issue-flow@<versión> upgrade # mueve el repo a esa versión (--d
197
197
 
198
198
  **`doctor`** no cambia nada. Revisa la config, las dependencias y que los hooks estén en esta versión. Cada problema dice qué lo arregla.
199
199
 
200
- **`upgrade`** mueve el repo a la versión que corre: las dependencias a las que fija, los hooks y el `$schema`. No consulta npm, así que se corre con la versión: `npx @ramon-sg/issue-flow@<versión> upgrade`. Nunca baja de versión: si el repo ya tiene una más nueva (por ejemplo, una copia local vieja en `node_modules`), se detiene y dice qué correr. Las skills del flujo llaman a la CLI, así que tienen que ir a la misma tag: `agent-kit` las mueve después. `--dry-run` solo dice qué cambiaría.
200
+ **`upgrade`** mueve el repo a la versión que corre: las dependencias a las que fija, los hooks y el `$schema`. No consulta npm, así que se corre con la versión: `npx @ramon-sg/issue-flow@<versión> upgrade`. Nunca baja de versión: si el repo ya tiene una más nueva (por ejemplo, una copia local vieja en `node_modules`), se detiene y dice qué correr. Las skills del flujo llaman a la CLI, así que tienen que ir a la misma tag: `agent-kitchen` las mueve después. `--dry-run` solo dice qué cambiaría.
201
201
 
202
202
  ### Recetas
203
203
 
@@ -210,7 +210,7 @@ Piezas de `flow.json` para lo que muchos repos comparten. `init` ofrece las que
210
210
  | `direnv` | `.envrc` | `direnv allow` en cada worktree, para que carguen su entorno y sus secretos (Infisical, por ejemplo) |
211
211
 
212
212
  Los pasos de preparación de las recetas son `trusted`: corren el código del worktree (el lockfile, el compose, el `.envrc`), así que en un worktree con código que no está en la rama base, como el de `pr worktree`, se saltan y el comando dice qué correr cuando lo revisaste.
213
- | `staging-main` | Nada: se pide | `baseBranch: "staging"`; `agent-kit` deja a `claude-repo-guard` mergear a `staging` |
213
+ | `staging-main` | Nada: se pide | `baseBranch: "staging"`; `agent-kitchen` deja a `claude-repo-guard` mergear a `staging` |
214
214
 
215
215
  ## Skills del flujo
216
216
 
@@ -224,7 +224,7 @@ Viven en `skills/` y `skills-catalog.json` las lista. Se instalan con [`skills-m
224
224
  | `pr-review-comments` | PRs | Verifica cada comentario y check contra el código, propone un plan, aplica lo aprobado y responde los hilos | `github-issues` |
225
225
  | `pr-worktree` | PRs | Revisa un PR en su worktree con `issue-flow pr worktree`, sin tocar el checkout principal | `close-pr` |
226
226
 
227
- `agent-kit` las instala con el catálogo en la tag de la versión del flujo y las mueve con él. `close-pr` y `pr-worktree` usan `code-audit`, del catálogo [`agent-skills`](https://github.com/ramon-sg/agent-skills): `agent-kit` ofrece los dos.
227
+ `agent-kitchen` las instala con el catálogo en la tag de la versión del flujo y las mueve con él. `close-pr` y `pr-worktree` usan `code-audit`, del catálogo [`agent-skills`](https://github.com/ramon-sg/agent-skills): `agent-kitchen` ofrece los dos.
228
228
 
229
229
  **Lo propio de cada repo va en `project.md`**, que cada skill (salvo `pr-worktree`) crea desde su plantilla al instalarse: los labels y el assignee, qué flujo sigue cada issue, qué corre sin preguntar al cerrar, qué bots revisan y qué cuenta como review aprobado. Ese archivo es del repo: `check` no lo marca y las actualizaciones lo conservan.
230
230
 
@@ -278,7 +278,7 @@ Usa [`github-rest`](https://github.com/ramon-sg/github-rest) para hablar con Git
278
278
 
279
279
  ## Publicar una versión
280
280
 
281
- Una versión es una release `vX.Y.Z` en GitHub, con el mismo número que `package.json`. Al publicarla, GitHub Actions corre los tests y publica en npm con procedencia (`.github/workflows/publish.yml`). La tag es también la versión de las skills del flujo: `agent-kit` instala el catálogo en la tag de la versión del flujo, así que la CLI y sus skills van siempre juntas.
281
+ Una versión es una release `vX.Y.Z` en GitHub, con el mismo número que `package.json`. Al publicarla, GitHub Actions corre los tests y publica en npm con procedencia (`.github/workflows/publish.yml`). La tag es también la versión de las skills del flujo: `agent-kitchen` instala el catálogo en la tag de la versión del flujo, así que la CLI y sus skills van siempre juntas.
282
282
 
283
283
  1. Un PR que sube `version` en `package.json`.
284
284
  2. Después del merge, una release `v<versión>` sobre ese commit de `main`.
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * @file `issue-flow doctor [--json]`: whether the repo's flow files are as `init` leaves
3
3
  * them, at this version: the config, the dev dependencies and the hooks. It changes nothing;
4
- * each problem says what fixes it. `--json` prints the checks for `@ramon-sg/agent-kit`,
4
+ * each problem says what fixes it. `--json` prints the checks for `agent-kitchen`,
5
5
  * which adds those of the skills and the other tools.
6
6
  */
7
7
  import { ConfigError } from "../config-base.js";
@@ -11,7 +11,7 @@ import { dependencyVersion } from "../package-edits.js";
11
11
  import { hookVersions } from "../settings-hooks.js";
12
12
  import { ownVersions, PACKAGE, readJson, SETTINGS_FILE, SetupError } from "../setup-files.js";
13
13
  /** What fixes every problem: it runs init or upgrade at the right version. */
14
- const RUN_AGENT_KIT = "run npx @ramon-sg/agent-kit";
14
+ const RUN_AGENT_KITCHEN = "run npx agent-kitchen";
15
15
  /**
16
16
  * Checks the config.
17
17
  * @param root - The repo.
@@ -40,8 +40,8 @@ function packageChecks(root, version) {
40
40
  const flow = dependencyVersion(pkg, PACKAGE);
41
41
  const rest = dependencyVersion(pkg, "@ramon-sg/github-rest");
42
42
  return [
43
- { name: PACKAGE, ok: flow === version, detail: flow === null ? `not in package.json: ${RUN_AGENT_KIT}` : flow === version ? version : `package.json has ${flow}, this is ${version}: ${RUN_AGENT_KIT}` },
44
- { name: "@ramon-sg/github-rest", ok: rest !== null, detail: rest ?? `not in package.json, and the skills call it: ${RUN_AGENT_KIT}` },
43
+ { name: PACKAGE, ok: flow === version, detail: flow === null ? `not in package.json: ${RUN_AGENT_KITCHEN}` : flow === version ? version : `package.json has ${flow}, this is ${version}: ${RUN_AGENT_KITCHEN}` },
44
+ { name: "@ramon-sg/github-rest", ok: rest !== null, detail: rest ?? `not in package.json, and the skills call it: ${RUN_AGENT_KITCHEN}` },
45
45
  ];
46
46
  }
47
47
  /**
@@ -54,7 +54,7 @@ function hookChecks(root, version) {
54
54
  return Object.entries(hookVersions(readJson(root, SETTINGS_FILE))).map(([event, found]) => ({
55
55
  name: `${event} hook`,
56
56
  ok: found === version,
57
- detail: found === null ? `not in ${SETTINGS_FILE}: ${RUN_AGENT_KIT}` : found === version ? version : `at ${found}, this is ${version}: ${RUN_AGENT_KIT}`,
57
+ detail: found === null ? `not in ${SETTINGS_FILE}: ${RUN_AGENT_KITCHEN}` : found === version ? version : `at ${found}, this is ${version}: ${RUN_AGENT_KITCHEN}`,
58
58
  }));
59
59
  }
60
60
  /**
@@ -3,7 +3,7 @@
3
3
  * is missing. It writes `.agents/flow.json` (from `paseo.json` if the repo has one, plus the
4
4
  * recipes it picks), the flow's dev dependencies and scripts in `package.json`, and the
5
5
  * `SessionStart`, `WorktreeCreate` and `WorktreeRemove` hooks. Only the flow's own files:
6
- * the skills, `claude-cloud` and `claude-repo-guard` are installed by `@ramon-sg/agent-kit`,
6
+ * the skills, `claude-cloud` and `claude-repo-guard` are installed by `agent-kitchen`,
7
7
  * which runs this command.
8
8
  */
9
9
  import { confirm } from "../ask.js";
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * @file `issue-flow upgrade [--dry-run]`: moves the repo's flow files to the version that
3
3
  * runs: the dev dependencies to the ones it pins, and the hooks and the config's schema to
4
- * it. `@ramon-sg/agent-kit` runs it as `npx @ramon-sg/issue-flow@<version> upgrade` and then
4
+ * it. `agent-kitchen` runs it as `npx @ramon-sg/issue-flow@<version> upgrade` and then
5
5
  * moves the flow's skills to the same tag, because the skills call this CLI.
6
6
  */
7
7
  import { CONFIG_PATH } from "../config-base.js";
@@ -59,7 +59,7 @@ export function upgrade(options, out) {
59
59
  const versions = ownVersions();
60
60
  const current = repoVersion(root);
61
61
  if (current !== null && isNewer(current, versions.issueFlow))
62
- throw new SetupError(`the repo is at issue-flow ${current}, newer than this ${versions.issueFlow}; run 'npx ${PACKAGE}@${current.replace(/^[\^~=]/, "")} upgrade' or 'npx @ramon-sg/agent-kit'.`);
62
+ throw new SetupError(`the repo is at issue-flow ${current}, newer than this ${versions.issueFlow}; run 'npx ${PACKAGE}@${current.replace(/^[\^~=]/, "")} upgrade' or 'npx agent-kitchen'.`);
63
63
  const writes = [];
64
64
  const lines = [];
65
65
  const pkg = withFlowPackages(readJson(root, "package.json"), versions, true);
package/dist/usage.d.ts CHANGED
@@ -2,4 +2,4 @@
2
2
  * @file The usage text of the CLI, printed with `--help` and after a usage error.
3
3
  */
4
4
  /** Usage text. */
5
- export declare const USAGE = "Usage:\n issue-flow issue branch <n>... [--namer claude|title] [--json] [-R owner/repo]\n issue-flow issue branch --missing [--limit <n>] [--namer claude|title] [--dry-run | --yes] [--json] [-R owner/repo]\n issue-flow issue start <n> [--branch] [--dry-run | --yes] [--resume <branch> | --new] [--no-launch]\n [--ask-permissions | --free] [--namer claude|title] [-R owner/repo]\n issue-flow issue start <n> --plan [--ask-permissions | --free] [--namer claude|title] [-R owner/repo]\n issue-flow issue start <n> --cloud | --here | --teleport | --adopt [...]\n issue-flow worktree setup [--only <step>]\n issue-flow worktree teardown [--path <dir>]\n issue-flow worktree ports [--next]\n issue-flow worktree cleanup [--path <dir>]\n issue-flow worktree prune [--only <dir>] [--yes] [-R owner/repo]\n issue-flow pr worktree <n> [--no-setup] [-R owner/repo] [-- [<command>...]]\n issue-flow adapter setup [--only <step>] | issue [<url>] | archive [-R owner/repo]\n issue-flow session\n issue-flow hook worktree-create | worktree-remove\n issue-flow init [--yes] [--recipe <name>,...]\n issue-flow doctor [--json]\n issue-flow upgrade [--dry-run]\n\nThe slug comes from the issue's \"Slug de rama\" block, then from Claude, then from the title,\nand the branch from the repo's template (an older \"Rama sugerida\" block is used if it fits).\n--missing adds the slug block to every open issue without a block, after confirming.\n\nissue start makes the branch in a worktree (or, with --branch, in this checkout), the\nstart commit, the push, the draft PR and the assignment, after confirming, and opens\nClaude: in auto mode if the repo has claude-repo-guard, with your settings with\n--ask-permissions, and with no sandbox nor questions with --free. --plan prints the branch\nand the prompt as JSON and changes nothing.\n\n--cloud confirms here and opens a Claude cloud session that starts the issue there.\n--here, inside a cloud session, starts it in this checkout and opens nothing. --teleport\nbrings the cloud session noted in the PR to the worktree. --adopt starts it in the\nworktree another tool (Orca, Paseo) just made, without asking nor opening Claude.\n\nworktree runs the steps of \"worktrees\" in .agents/flow.json: setup prepares this worktree,\nteardown cleans it before it goes (steps, ports, Docker), ports prints or moves its block\nof ports, cleanup deletes the Docker of deleted worktrees, and prune deletes the worktrees\nwhose PR was merged or closed. session is the SessionStart hook of Claude Code.\n\npr worktree makes (or reuses) a worktree on a PR's own branch, to review and fix it; with\n--, it runs the command there (Claude if none). adapter is what Orca and Paseo run: setup\nwhen they make a worktree (its steps and, if it came from an issue, issue start --adopt),\nissue to start one by hand, and archive before they delete it. hook implements Claude\nCode's WorktreeCreate and WorktreeRemove for claude --worktree.\n\ninit sets the flow up in the repo: .agents/flow.json (with the recipes its files suggest),\nthe dev dependencies and scripts, and the hooks. doctor checks them at this version, and\nupgrade moves them to this version. npx @ramon-sg/agent-kit runs the three, along with the\nskills, claude-cloud and claude-repo-guard.";
5
+ export declare const USAGE = "Usage:\n issue-flow issue branch <n>... [--namer claude|title] [--json] [-R owner/repo]\n issue-flow issue branch --missing [--limit <n>] [--namer claude|title] [--dry-run | --yes] [--json] [-R owner/repo]\n issue-flow issue start <n> [--branch] [--dry-run | --yes] [--resume <branch> | --new] [--no-launch]\n [--ask-permissions | --free] [--namer claude|title] [-R owner/repo]\n issue-flow issue start <n> --plan [--ask-permissions | --free] [--namer claude|title] [-R owner/repo]\n issue-flow issue start <n> --cloud | --here | --teleport | --adopt [...]\n issue-flow worktree setup [--only <step>]\n issue-flow worktree teardown [--path <dir>]\n issue-flow worktree ports [--next]\n issue-flow worktree cleanup [--path <dir>]\n issue-flow worktree prune [--only <dir>] [--yes] [-R owner/repo]\n issue-flow pr worktree <n> [--no-setup] [-R owner/repo] [-- [<command>...]]\n issue-flow adapter setup [--only <step>] | issue [<url>] | archive [-R owner/repo]\n issue-flow session\n issue-flow hook worktree-create | worktree-remove\n issue-flow init [--yes] [--recipe <name>,...]\n issue-flow doctor [--json]\n issue-flow upgrade [--dry-run]\n\nThe slug comes from the issue's \"Slug de rama\" block, then from Claude, then from the title,\nand the branch from the repo's template (an older \"Rama sugerida\" block is used if it fits).\n--missing adds the slug block to every open issue without a block, after confirming.\n\nissue start makes the branch in a worktree (or, with --branch, in this checkout), the\nstart commit, the push, the draft PR and the assignment, after confirming, and opens\nClaude: in auto mode if the repo has claude-repo-guard, with your settings with\n--ask-permissions, and with no sandbox nor questions with --free. --plan prints the branch\nand the prompt as JSON and changes nothing.\n\n--cloud confirms here and opens a Claude cloud session that starts the issue there.\n--here, inside a cloud session, starts it in this checkout and opens nothing. --teleport\nbrings the cloud session noted in the PR to the worktree. --adopt starts it in the\nworktree another tool (Orca, Paseo) just made, without asking nor opening Claude.\n\nworktree runs the steps of \"worktrees\" in .agents/flow.json: setup prepares this worktree,\nteardown cleans it before it goes (steps, ports, Docker), ports prints or moves its block\nof ports, cleanup deletes the Docker of deleted worktrees, and prune deletes the worktrees\nwhose PR was merged or closed. session is the SessionStart hook of Claude Code.\n\npr worktree makes (or reuses) a worktree on a PR's own branch, to review and fix it; with\n--, it runs the command there (Claude if none). adapter is what Orca and Paseo run: setup\nwhen they make a worktree (its steps and, if it came from an issue, issue start --adopt),\nissue to start one by hand, and archive before they delete it. hook implements Claude\nCode's WorktreeCreate and WorktreeRemove for claude --worktree.\n\ninit sets the flow up in the repo: .agents/flow.json (with the recipes its files suggest),\nthe dev dependencies and scripts, and the hooks. doctor checks them at this version, and\nupgrade moves them to this version. npx agent-kitchen runs the three, along with the\nskills, claude-cloud and claude-repo-guard.";
package/dist/usage.js CHANGED
@@ -50,5 +50,5 @@ Code's WorktreeCreate and WorktreeRemove for claude --worktree.
50
50
 
51
51
  init sets the flow up in the repo: .agents/flow.json (with the recipes its files suggest),
52
52
  the dev dependencies and scripts, and the hooks. doctor checks them at this version, and
53
- upgrade moves them to this version. npx @ramon-sg/agent-kit runs the three, along with the
53
+ upgrade moves them to this version. npx agent-kitchen runs the three, along with the
54
54
  skills, claude-cloud and claude-repo-guard.`;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ramon-sg/issue-flow",
3
- "version": "0.2.0",
3
+ "version": "0.2.2",
4
4
  "description": "Issue-to-PR workflow for any repo: names each issue's branch, creates its worktree, opens the draft PR and launches Claude Code, locally and in Claude's cloud.",
5
5
  "license": "MIT",
6
6
  "type": "module",
@@ -18,5 +18,5 @@
18
18
  "prepublishOnly": "npm test"
19
19
  },
20
20
  "dependencies": { "@ramon-sg/github-rest": "0.2.1" },
21
- "devDependencies": { "@ramon-sg/skills-manager": "1.1.0", "@types/node": "^24.0.0", "typescript": "^5.9.3" }
21
+ "devDependencies": { "@ramon-sg/skills-manager": "1.2.0", "@types/node": "^24.0.0", "typescript": "^5.9.3" }
22
22
  }