issy 0.11.0 → 0.11.1

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
@@ -151,7 +151,6 @@ issy update 0001 --body "New details" # Replace body content
151
151
  issy close 0001 # Close issue
152
152
  issy reopen 0001 --after 0004 # Reopen and place in roadmap
153
153
  issy learn # Print compact AI-agent instructions
154
- issy learn roadmap # Print focused topic instructions
155
154
  issy skill install # Install the AI bootstrap skill
156
155
  issy migrate # Migrate from .issues/ to .issy/
157
156
  issy --version # Check version
package/dist/cli.js CHANGED
@@ -2501,9 +2501,7 @@ Commands:
2501
2501
 
2502
2502
  next Show the next issue to work on
2503
2503
 
2504
- learn [topic] Print AI-agent instructions for this issy version
2505
- --all Print the full reference
2506
- --list List focused topics
2504
+ learn Print AI-agent instructions for this issy version
2507
2505
 
2508
2506
  create Create a new issue
2509
2507
  --title, -t <t> Issue title
@@ -2547,7 +2545,6 @@ Examples:
2547
2545
  issy list --priority high --type bug
2548
2546
  issy next
2549
2547
  issy learn
2550
- issy learn roadmap
2551
2548
  issy read 0001
2552
2549
  issy create --title "Fix login bug" --type bug --priority high --after 0002
2553
2550
  issy create --title "Add dark mode" --last
package/dist/main.js CHANGED
@@ -2192,338 +2192,215 @@ function markdown(lines) {
2192
2192
  `).trim()}
2193
2193
  `;
2194
2194
  }
2195
- var compact = markdown([
2196
- "# issy agent instructions",
2195
+ var output = markdown([
2196
+ "# Track issues with the issy CLI",
2197
2197
  "",
2198
- "Use issy for project issue tracking when the user asks to create, read, update, list, search, prioritize, close, reopen, or choose issue/task/bug work.",
2198
+ "## Authoring Issues",
2199
2199
  "",
2200
- "## First action",
2200
+ "Issues describe *what* needs to be done and *why*. Keep them high-level unless the user provides specific details.",
2201
2201
  "",
2202
- "- If this request is about issue tracking, run `issy learn` before acting unless you already ran it in this session.",
2203
- "- Use the returned guidance as the source of truth for this installed issy version.",
2204
- "- For focused details, run `issy learn <topic>` instead of loading everything.",
2202
+ "### What to Include",
2205
2203
  "",
2206
- "## Essential workflow",
2204
+ "- **Problem/Overview**: What's wrong or what's needed (1-2 paragraphs)",
2205
+ "- **Proposed Solution**: High-level approach",
2206
+ '- **Acceptance Criteria**: Optional - what "done" looks like from user perspective',
2207
+ "- **Verification**: Optional but encouraged - how to prove the issue is resolved (see below)",
2208
+ "- **Future Considerations**: Optional - related ideas for later",
2209
+ "- **References**: Optional - links to related docs, issues, or resources",
2207
2210
  "",
2208
- "- List work: `issy list`, `issy list --all`, or `issy list --unblocked`.",
2209
- '- Search work: `issy search "query"` or `issy search "query" --all`.',
2210
- "- Read before changing: `issy read <id>`.",
2211
- "- Pick next work: `issy next`.",
2212
- '- Create work: `issy create --title "..." --type bug|improvement --priority high|medium|low <position>`.',
2213
- '- Create blocked work: `issy create --title "..." --depends-on 0001,0002 <position>`.',
2214
- "- Update work: `issy update <id> [options]`, including `--depends-on <ids>` to replace blockers.",
2215
- "- Close work: `issy close <id>` after the work is complete and verified.",
2216
- "- Reopen work: `issy reopen <id> <position>`.",
2211
+ "### Verification Guidance",
2217
2212
  "",
2218
- "## Issue authoring",
2213
+ "When possible, include verification steps or hints that tell the implementing agent *how to prove* the issue is resolved. This helps ensure work is actually verified before being marked complete.",
2219
2214
  "",
2220
- "- Capture what needs to be done and why. Keep implementation details out unless the user provides them.",
2221
- "- Good bodies usually include Problem/Overview, Proposed Solution, optional Acceptance Criteria, optional Verification, optional Future Considerations, and optional References.",
2222
- "- Include verification guidance when possible so the implementing agent can prove completion with commands, UI flows, queries, or expected behavior.",
2223
- "- Issues should be completable and verifiable in one focused session. Split only when a child issue is independently closeable.",
2215
+ "**Why include verification?** Agents should never claim work is done without evidence. If the issue itself describes how to verify, the implementing agent can follow those steps and provide concrete proof (command output, test results, screenshots, etc.).",
2224
2216
  "",
2225
- "## Roadmap ordering",
2217
+ "**Verification examples:**",
2218
+ "- Commands to run and expected output (`curl`, CLI commands, `bun test`)",
2219
+ "- UI flows to test (can use `agent-browser` skill if available for automation)",
2220
+ "- Database queries to confirm state changes",
2221
+ "- Specific behavior to observe or confirm",
2222
+ "- Edge cases to check",
2226
2223
  "",
2227
- "- Open issues form a strict roadmap order.",
2228
- "- When creating an issue and open issues already exist, include exactly one position flag: `--before <id>`, `--after <id>`, `--first`, or `--last`.",
2229
- "- When reopening an issue and other open issues exist, include exactly one position flag.",
2230
- "- Use dependency order: prerequisites first, dependent/user-facing work later. Use `--last` when placement is unclear.",
2231
- "- Use `depends_on` / `--depends-on` when an issue cannot start until specific blocking issues are closed.",
2232
- "- Roadmap placement is enforced against open dependencies: an open issue cannot be placed before an open issue it depends on.",
2233
- "- `issy list` shows a `Blk` column with open blocker counts; `-` means unblocked.",
2234
- "- `issy list --unblocked` shows only open issues with no open blockers.",
2224
+ "**Examples:**",
2235
2225
  "",
2236
- "## Closing",
2226
+ "```markdown",
2227
+ "## Verification",
2228
+ 'Run `bun test src/auth.test.ts` — all tests should pass, including the new "handles expired tokens" case.',
2229
+ "```",
2237
2230
  "",
2238
- "- Before closing, verify the issue is actually resolved.",
2239
- "- If useful context was discovered, append a brief `## Resolution Notes` section before closing.",
2240
- "- If the repo tracks issues in git, consider committing `.issy/` changes after mutations.",
2231
+ "```markdown",
2232
+ "## Verification",
2233
+ "Perform the following using the agent-browser skill:",
2241
2234
  "",
2242
- "## More focused context",
2235
+ "1. Navigate to /settings and toggle dark mode",
2236
+ "2. Refresh the page — preference should persist",
2237
+ '3. Check localStorage contains `theme: "dark"`',
2238
+ "```",
2243
2239
  "",
2244
- "- `issy learn topics` lists available topics.",
2245
- "- `issy learn authoring` covers issue writing rules.",
2246
- "- `issy learn roadmap` covers placement rules.",
2247
- "- `issy learn commands` covers CLI command syntax.",
2248
- "- `issy learn hooks` covers hook files.",
2249
- "- `issy learn agents` prints AGENTS.md and skill bootstrap guidance.",
2250
- "- `issy learn --all` prints the full agent reference."
2240
+ "```markdown",
2241
+ "## Verification",
2242
+ 'After deployment, `curl https://api.example.com/health` should return `{"status": "ok"}` with a 200 response.',
2243
+ "```",
2244
+ "",
2245
+ "### Implementation Details",
2246
+ "",
2247
+ "**Only include implementation details if the user explicitly provides them.** Don't invent:",
2248
+ "",
2249
+ "- Task lists or phases",
2250
+ "- Specific code changes or file paths",
2251
+ "- Step-by-step instructions",
2252
+ "- Technical breakdowns",
2253
+ "",
2254
+ "**Why?** The engineer working on the issue will plan their own implementation. Issues capture the user's intent, not execution plans generated by the agent.",
2255
+ "",
2256
+ "**The rule:** Capture what the user says. If they provide implementation details, include them. If they don't, keep it high-level.",
2257
+ "",
2258
+ "## Issue Sizing",
2259
+ "",
2260
+ "An issue should be completable and verifiable in a single focused session — pick it up, implement it, prove it works, close it. If that's not realistic, split along verification boundaries so each child issue is independently closeable. Don't split when it adds overhead without adding clarity.",
2261
+ "",
2262
+ "## Roadmap Ordering",
2263
+ "",
2264
+ "issy maintains a **roadmap** — a strict, intentional ordering of all open issues. Every open issue has a position in the roadmap, and the ordering is designed to be dependency-aware and chronological. No issue should be blocked by one that follows it.",
2265
+ "",
2266
+ "### Rules",
2267
+ "",
2268
+ "- When **creating** an issue: if there are already open issues, you **must** provide a position flag: `--before <id>`, `--after <id>`, `--first`, or `--last`.",
2269
+ "- When **reopening** an issue: same rule — provide a position flag if there are other open issues.",
2270
+ "- When **updating** an issue: optionally provide a position flag to reposition it in the roadmap.",
2271
+ "- `issy next` returns the first open issue in roadmap order — the next unit of work.",
2272
+ "- `issy list` sorts by roadmap order by default.",
2273
+ "",
2274
+ "### Choosing placement",
2275
+ "",
2276
+ "Think about logical dependency when choosing position:",
2277
+ "- If issue B requires work from issue A to be done first, A must come before B.",
2278
+ "- Place foundational/infrastructure work early, user-facing features later.",
2279
+ "- Use `--first` for urgent work that should be tackled immediately.",
2280
+ "- Use `--last` when in doubt — appends to the end of the roadmap.",
2281
+ "- Use `--before <id>` or `--after <id>` for precise placement between existing issues.",
2282
+ "",
2283
+ "## CLI Commands",
2284
+ "",
2285
+ "Use the `issy` CLI. If not installed, install it globally using the project's package manager (e.g., `bun install issy --global`, `pnpm add issy --global`, `npm install issy --global`).",
2286
+ "",
2287
+ "```bash",
2288
+ "# List issues (roadmap order by default)",
2289
+ "issy list # Open issues only",
2290
+ "issy list --all # Include closed",
2291
+ "issy list --priority high # Filter: high, medium, low",
2292
+ "issy list --scope small # Filter: small, medium, large",
2293
+ "issy list --type bug # Filter: bug, improvement",
2294
+ 'issy list --search "keyword" # Fuzzy search',
2295
+ "issy list --sort priority # Sort: roadmap (default), priority, created, updated, id",
2296
+ "",
2297
+ "# Search issues (fuzzy search with typo tolerance)",
2298
+ 'issy search "dashboard" # Search open issues',
2299
+ 'issy search "k8s" --all # Include closed issues',
2300
+ "",
2301
+ "# Read issue",
2302
+ "issy read <id> # e.g., issy read 0001",
2303
+ "",
2304
+ "# Next issue (first open issue in roadmap order)",
2305
+ "issy next",
2306
+ "",
2307
+ "# Create issue (position flag required when open issues exist)",
2308
+ 'issy create --title "Fix login bug" --type bug --priority high --after 0002',
2309
+ 'issy create --title "Add dark mode" --type improvement --last --labels "ui, frontend"',
2310
+ 'issy create --title "Urgent fix" --first',
2311
+ 'issy create --title "Fix crash" --body "## Problem\\n\\nApp crashes on startup." --last',
2312
+ "",
2313
+ "# Update issue (position flags to reposition in roadmap)",
2314
+ "issy update <id> --priority low",
2315
+ "issy update <id> --after 0003",
2316
+ "issy update <id> --first",
2317
+ 'issy update <id> --labels "api, backend"',
2318
+ 'issy update <id> --body "## Problem\\n\\nUpdated description of the issue."',
2319
+ "",
2320
+ "# Close issue",
2321
+ "issy close <id>",
2322
+ "",
2323
+ "# Reopen issue (position flag required when other open issues exist)",
2324
+ "issy reopen <id> --last",
2325
+ "issy reopen <id> --after 0004",
2326
+ "```",
2327
+ "",
2328
+ "## Hooks",
2329
+ "",
2330
+ "issy supports optional hook files in `.issy/` that print context to stdout after successful operations. This is useful for injecting reminders into the agent's context — for example, prompting the agent to update documentation or run post-action checks.",
2331
+ "",
2332
+ "| Hook file | Triggered after |",
2333
+ "|-----------|----------------|",
2334
+ "| `on_create.md` | Creating an issue |",
2335
+ "| `on_update.md` | Updating an issue |",
2336
+ "| `on_close.md` | Closing an issue |",
2337
+ "",
2338
+ "## Project Structure",
2339
+ "",
2340
+ "Issues are stored in `.issy/issues/` as markdown files with YAML frontmatter. The directory structure:",
2341
+ "",
2342
+ "```",
2343
+ ".issy/",
2344
+ " issues/",
2345
+ " 0001-fix-login-redirect.md",
2346
+ " 0002-add-dark-mode.md",
2347
+ " on_create.md # Optional: printed after successful create",
2348
+ " on_update.md # Optional: printed after successful update",
2349
+ " on_close.md # Optional: printed after successful close",
2350
+ "```",
2351
+ "",
2352
+ "## Closing Issues with Learnings",
2353
+ "",
2354
+ "When closing an issue, append a `## Resolution Notes` section if anything useful was discovered during implementation:",
2355
+ "",
2356
+ "- Alternative approaches considered or rejected",
2357
+ "- Unexpected gotchas or edge cases found",
2358
+ "- Decisions made that differ from the original plan",
2359
+ "- Useful context for future reference",
2360
+ "",
2361
+ "Keep it brief—just capture what someone revisiting this issue would want to know.",
2362
+ "",
2363
+ "## Issue Properties",
2364
+ "",
2365
+ "| Property | Required | Values |",
2366
+ "|----------|----------|--------|",
2367
+ "| title | Yes | string |",
2368
+ "| body | No | markdown content (the issue body after frontmatter) |",
2369
+ "| priority | Yes | `high`, `medium`, `low` |",
2370
+ "| scope | No | `small`, `medium`, `large` |",
2371
+ "| type | Yes | `bug`, `improvement` |",
2372
+ "| labels | No | comma-separated strings |",
2373
+ "| status | Yes | `open`, `closed` |",
2374
+ "| order | Auto | fractional index key (managed by issy) |",
2375
+ "",
2376
+ "## After Mutations",
2377
+ "",
2378
+ "If your workflow tracks issues in git, consider committing updates so the tracker stays in sync."
2251
2379
  ]);
2252
- var topics = [
2253
- {
2254
- name: "authoring",
2255
- description: "Issue writing, sizing, verification, and resolution notes.",
2256
- content: markdown([
2257
- "# issy issue authoring",
2258
- "",
2259
- "Issues describe what needs to be done and why. Keep them high-level unless the user provides specific implementation details.",
2260
- "",
2261
- "## What to include",
2262
- "",
2263
- "- Problem/Overview: what is wrong or needed, usually one or two paragraphs.",
2264
- "- Proposed Solution: high-level approach.",
2265
- "- Acceptance Criteria: optional, from the user perspective.",
2266
- "- Verification: optional but encouraged; explain how to prove the issue is resolved.",
2267
- "- Future Considerations: optional related ideas for later.",
2268
- "- References: optional links to related docs, issues, PRs, or resources.",
2269
- "",
2270
- "## Verification guidance",
2271
- "",
2272
- "When possible, include verification steps or hints. Agents should not claim work is done without evidence.",
2273
- "",
2274
- "Useful verification examples:",
2275
- "",
2276
- "- Commands to run and expected output, such as `bun test`, `npm test`, `curl`, or a project CLI.",
2277
- "- UI flows to test, including browser automation when available.",
2278
- "- Database queries or API calls that confirm state changes.",
2279
- "- Specific behavior to observe.",
2280
- "- Edge cases to check.",
2281
- "",
2282
- "## Implementation details rule",
2283
- "",
2284
- "Only include implementation details if the user explicitly provides them. Do not invent task lists, phases, file paths, code changes, or step-by-step technical breakdowns.",
2285
- "",
2286
- "The issue should capture the user intent. The engineer or agent implementing it can plan the implementation later.",
2287
- "",
2288
- "## Sizing",
2289
- "",
2290
- "An issue should be completable and verifiable in a single focused session. Split large work along verification boundaries so each child issue can be independently completed and closed. Do not split when it adds overhead without clarity.",
2291
- "",
2292
- "## Closing with learnings",
2293
- "",
2294
- "When closing an issue, append a brief `## Resolution Notes` section if useful context was discovered during implementation:",
2295
- "",
2296
- "- Alternative approaches considered or rejected.",
2297
- "- Unexpected gotchas or edge cases.",
2298
- "- Decisions that differ from the original plan.",
2299
- "- Useful context for future maintainers."
2300
- ])
2301
- },
2302
- {
2303
- name: "roadmap",
2304
- description: "Strict roadmap ordering and position flag rules.",
2305
- aliases: ["ordering"],
2306
- content: markdown([
2307
- "# issy roadmap ordering",
2308
- "",
2309
- "issy maintains a strict roadmap order for all open issues. `issy next` returns the first open issue in that order. `issy list` sorts by roadmap order by default.",
2310
- "",
2311
- "## Required position flags",
2312
- "",
2313
- "- Creating an issue: if open issues already exist, provide exactly one of `--before <id>`, `--after <id>`, `--first`, or `--last`.",
2314
- "- Reopening an issue: if other open issues exist, provide exactly one position flag.",
2315
- "- Updating an issue: position flags are optional and reposition the issue when provided.",
2316
- "- Never provide more than one position flag.",
2317
- "",
2318
- "## Explicit blockers",
2319
- "",
2320
- "- Use `depends_on` when an issue cannot start until specific blocking issues are closed.",
2321
- '- Create blocked work with `issy create --title "..." --depends-on 0001,0002 --last`.',
2322
- "- Replace blockers with `issy update <id> --depends-on 0001,0003`.",
2323
- '- Clear blockers with `issy update <id> --depends-on ""`.',
2324
- "- Missing or malformed dependency IDs are ignored.",
2325
- "- Roadmap placement is enforced against open dependencies: an open issue cannot be placed before an open issue it depends on, and a blocker cannot be moved after open issues that depend on it.",
2326
- "- `issy list` shows a compact `Blk` column. `-` means unblocked; otherwise the value is the number of open blockers.",
2327
- "- `issy list --unblocked` shows only open issues with no open blockers.",
2328
- "",
2329
- "## Choosing placement",
2330
- "",
2331
- "- Place prerequisites before dependent issues.",
2332
- "- Place foundational or infrastructure work before user-facing work that depends on it.",
2333
- "- Use `--first` for urgent work that should be tackled immediately.",
2334
- "- Use `--last` when placement is unclear.",
2335
- "- Use `--before <id>` or `--after <id>` for precise placement.",
2336
- "",
2337
- "## Useful commands",
2338
- "",
2339
- "- `issy list` shows open issues in roadmap order.",
2340
- "- `issy list --unblocked` shows open issues with no open blockers.",
2341
- "- `issy next` shows the first open issue in roadmap order.",
2342
- '- `issy create --title "..." --last` appends a new issue.',
2343
- '- `issy create --title "..." --depends-on 0001,0002 --last` creates an issue blocked by other issues.',
2344
- "- `issy update <id> --before <other-id>` repositions an issue.",
2345
- "- `issy update <id> --depends-on 0001,0003` replaces blockers.",
2346
- "- `issy reopen <id> --after <other-id>` reopens and places a closed issue."
2347
- ])
2348
- },
2349
- {
2350
- name: "commands",
2351
- description: "CLI command syntax for issue operations.",
2352
- aliases: ["cli", "reference"],
2353
- content: markdown([
2354
- "# issy CLI command reference",
2355
- "",
2356
- "Use the `issy` CLI. If it is not installed, install it with the project package manager, for example `npm install issy --global`, `pnpm add issy --global`, or `bun install issy --global`.",
2357
- "",
2358
- "## List and search",
2359
- "",
2360
- "- `issy list`: list open issues in roadmap order.",
2361
- "- `issy list --all`: include closed issues.",
2362
- "- `issy list --unblocked`: list open issues with no open blockers.",
2363
- "- `issy list --priority high|medium|low`: filter by priority.",
2364
- "- `issy list --scope small|medium|large`: filter by scope.",
2365
- "- `issy list --type bug|improvement`: filter by type.",
2366
- '- `issy list --search "keyword"`: fuzzy search while listing.',
2367
- "- `issy list --sort roadmap|priority|created|updated|id`: choose sort order.",
2368
- '- `issy search "query"`: fuzzy search open issues.',
2369
- '- `issy search "query" --all`: include closed issues.',
2370
- "",
2371
- "## Read and choose work",
2372
- "",
2373
- "- `issy read <id>`: read a full issue.",
2374
- "- `issy next`: show the next open issue in roadmap order.",
2375
- "",
2376
- "## Create",
2377
- "",
2378
- '- `issy create --title "Fix login bug" --type bug --priority high --after 0002`.',
2379
- '- `issy create --title "Add dark mode" --type improvement --last --labels "ui, frontend"`.',
2380
- '- `issy create --title "Add export" --depends-on 0001,0002 --last`.',
2381
- '- `issy create --title "Urgent fix" --first`.',
2382
- '- `issy create --title "Fix crash" --body "## Problem\\n\\nApp crashes on startup." --last`.',
2383
- "",
2384
- "Create options: `--title`, `--body`, `--priority`, `--scope`, `--type`, `--labels`, `--depends-on`, `--before`, `--after`, `--first`, `--last`.",
2385
- "",
2386
- "## Update",
2387
- "",
2388
- "- `issy update <id> --priority low`.",
2389
- "- `issy update <id> --after 0003`.",
2390
- "- `issy update <id> --first`.",
2391
- '- `issy update <id> --labels "api, backend"`.',
2392
- "- `issy update <id> --depends-on 0001,0003`.",
2393
- '- `issy update <id> --body "## Problem\\n\\nUpdated description."`.',
2394
- "",
2395
- "Update options: `--title`, `--body`, `--priority`, `--scope`, `--type`, `--labels`, `--depends-on`, `--before`, `--after`, `--first`, `--last`.",
2396
- "",
2397
- "## Close and reopen",
2398
- "",
2399
- "- `issy close <id>`.",
2400
- "- `issy reopen <id> --last`.",
2401
- "- `issy reopen <id> --after 0004`.",
2402
- "",
2403
- "When reopening and other open issues exist, include exactly one position flag."
2404
- ])
2405
- },
2406
- {
2407
- name: "hooks",
2408
- description: "Optional `.issy/` hook files that print agent context after mutations.",
2409
- content: markdown([
2410
- "# issy hooks",
2411
- "",
2412
- "issy supports optional hook files in `.issy/`. After a successful mutation, issy prints the matching hook file contents to stdout so agents can see project-specific reminders.",
2413
- "",
2414
- "## Hook files",
2415
- "",
2416
- "- `.issy/on_create.md`: printed after `issy create`.",
2417
- "- `.issy/on_update.md`: printed after `issy update`.",
2418
- "- `.issy/on_close.md`: printed after `issy close`.",
2419
- "",
2420
- "## Good hook uses",
2421
- "",
2422
- "- Remind agents to update docs for user-facing behavior changes.",
2423
- "- Remind agents to run project-specific checks.",
2424
- "- Add team conventions for issue mutations.",
2425
- "- Surface release or changelog requirements.",
2426
- "",
2427
- "Hook content should be concise because it is injected directly into command output."
2428
- ])
2429
- },
2430
- {
2431
- name: "agents",
2432
- description: "Bootstrap instructions for AGENTS.md and shell skills.",
2433
- aliases: ["skill", "bootstrap"],
2434
- content: markdown([
2435
- "# issy agent bootstrap",
2436
- "",
2437
- "`issy learn` is the canonical AI-agent reference for the installed issy version. Skills and AGENTS.md files should bootstrap agents into this command instead of duplicating the full reference.",
2438
- "",
2439
- "## Relevance rule",
2440
- "",
2441
- "Use issy when creating, reading, updating, listing, searching, prioritizing, closing, reopening, or choosing project issues, tasks, bugs, improvements, or roadmap work.",
2442
- "",
2443
- "## AGENTS.md snippet",
2444
- "",
2445
- "Add this to AGENTS.md:",
2446
- "",
2447
- "```md",
2448
- "When the task involves creating, reading, updating, listing, searching, prioritizing, closing, reopening, or choosing project issues, tasks, bugs, improvements, or roadmap work, run `issy learn` first and follow its guidance.",
2449
- "```",
2450
- "",
2451
- "## Skill bootstrap behavior",
2452
- "",
2453
- "A compatible skill should only define the relevance rule and instruct the agent to run `issy learn` when relevant. The operational reference belongs in the CLI output."
2454
- ])
2455
- }
2456
- ];
2457
- var aliases = new Map;
2458
- for (const topic of topics) {
2459
- aliases.set(topic.name, topic);
2460
- for (const alias of topic.aliases ?? []) {
2461
- aliases.set(alias, topic);
2462
- }
2463
- }
2464
- function topicList() {
2465
- return markdown([
2466
- "# issy learn topics",
2467
- "",
2468
- "Run `issy learn <topic>` for focused agent context.",
2469
- "",
2470
- ...topics.map((topic) => `- \`${topic.name}\`: ${topic.description}`),
2471
- "",
2472
- "Other options:",
2473
- "",
2474
- "- `issy learn`: compact default instructions.",
2475
- "- `issy learn --all`: full reference.",
2476
- "- `issy learn --help`: command usage."
2477
- ]);
2478
- }
2479
2380
  function usage() {
2480
2381
  return markdown([
2481
- "Usage: issy learn [topic] [options]",
2382
+ "Usage: issy learn [options]",
2482
2383
  "",
2483
2384
  "Print AI-agent instructions for using issy.",
2484
2385
  "",
2485
- "Topics:",
2486
- ...topics.map((topic) => ` ${topic.name.padEnd(10)} ${topic.description}`),
2487
- "",
2488
2386
  "Options:",
2489
- " --all Print the compact guidance and all topics",
2490
- " --list List available topics",
2491
2387
  " --help, -h Show this help",
2492
2388
  "",
2493
2389
  "Examples:",
2494
- " issy learn",
2495
- " issy learn roadmap",
2496
- " issy learn commands",
2497
- " issy learn --all"
2390
+ " issy learn"
2498
2391
  ]);
2499
2392
  }
2500
2393
  function getLearnOutput(args = []) {
2501
2394
  if (args.includes("--help") || args.includes("-h")) {
2502
2395
  return usage();
2503
2396
  }
2504
- if (args.includes("--list")) {
2505
- return topicList();
2506
- }
2507
- if (args.includes("--all")) {
2508
- return [compact, ...topics.map((topic2) => topic2.content)].join(`
2509
- ---
2510
-
2511
- `);
2512
- }
2513
- const topicArg = args.find((arg) => !arg.startsWith("-"));
2514
- if (!topicArg) {
2515
- return compact;
2516
- }
2517
- if (topicArg === "topics" || topicArg === "list") {
2518
- return topicList();
2519
- }
2520
- const topic = aliases.get(topicArg);
2521
- if (!topic) {
2522
- throw new Error(`Unknown learn topic: ${topicArg}
2397
+ const unknownArg = args.find((arg) => arg.trim() !== "");
2398
+ if (unknownArg) {
2399
+ throw new Error(`Unknown learn argument: ${unknownArg}
2523
2400
 
2524
- ${topicList()}`);
2401
+ ${usage()}`);
2525
2402
  }
2526
- return topic.content;
2403
+ return output;
2527
2404
  }
2528
2405
 
2529
2406
  // src/main.ts
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "issy",
3
- "version": "0.11.0",
3
+ "version": "0.11.1",
4
4
  "description": "AI-native issue tracking. Markdown files in .issues/, managed by your coding assistant.",
5
5
  "type": "module",
6
6
  "license": "MIT",
@@ -35,8 +35,8 @@
35
35
  "lint": "biome check src bin"
36
36
  },
37
37
  "dependencies": {
38
- "@miketromba/issy-app": "^0.11.0",
39
- "@miketromba/issy-core": "^0.11.0",
38
+ "@miketromba/issy-app": "^0.11.1",
39
+ "@miketromba/issy-core": "^0.11.1",
40
40
  "update-notifier": "^7.3.1"
41
41
  }
42
42
  }