issy 0.8.1 → 0.10.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.
- package/README.md +22 -6
- package/dist/cli.js +7 -1
- package/dist/main.js +329 -2
- package/package.json +3 -3
package/README.md
CHANGED
|
@@ -10,14 +10,15 @@
|
|
|
10
10
|
|
|
11
11
|
<p align="center">
|
|
12
12
|
<strong>AI-native issue tracking.</strong><br>
|
|
13
|
-
Tell your coding assistant what to track. It handles the rest
|
|
13
|
+
Tell your coding assistant what to track. It handles the rest.<br>
|
|
14
|
+
<a href="https://issy.sh">issy.sh</a>
|
|
14
15
|
</p>
|
|
15
16
|
|
|
16
17
|
---
|
|
17
18
|
|
|
18
19
|
## How It Works
|
|
19
20
|
|
|
20
|
-
issy gives AI coding assistants
|
|
21
|
+
issy gives AI coding assistants versioned instructions for managing issues. Add a small AGENTS.md rule or install the bootstrap skill, then just talk naturally:
|
|
21
22
|
|
|
22
23
|
> "Create a bug for the login redirect issue, high priority"
|
|
23
24
|
|
|
@@ -27,19 +28,31 @@ issy gives AI coding assistants a skill for managing issues. Just talk naturally
|
|
|
27
28
|
|
|
28
29
|
The assistant creates, searches, updates, and closes issues for you. Issues are stored as markdown files in `.issy/issues/` — readable, diffable, and committed with your code.
|
|
29
30
|
|
|
30
|
-
##
|
|
31
|
+
## Teach Your AI Assistant
|
|
32
|
+
|
|
33
|
+
```bash
|
|
34
|
+
issy learn
|
|
35
|
+
```
|
|
36
|
+
|
|
37
|
+
`issy learn` prints the canonical AI-agent reference for your installed issy version. To make agents run it automatically, add this to AGENTS.md:
|
|
38
|
+
|
|
39
|
+
```md
|
|
40
|
+
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.
|
|
41
|
+
```
|
|
42
|
+
|
|
43
|
+
You can also install the lightweight bootstrap skill:
|
|
31
44
|
|
|
32
45
|
```bash
|
|
33
46
|
issy skill install
|
|
34
47
|
```
|
|
35
48
|
|
|
36
|
-
Or,
|
|
49
|
+
Or, without running the issy wrapper:
|
|
37
50
|
|
|
38
51
|
```bash
|
|
39
52
|
npx skills add miketromba/issy
|
|
40
53
|
```
|
|
41
54
|
|
|
42
|
-
|
|
55
|
+
The skill contains only the relevance rule and tells compatible assistants to run `issy learn`, keeping the real agent guidance in one versioned place. The `issy` CLI still needs to be available when the assistant runs `issy learn`.
|
|
43
56
|
|
|
44
57
|
## Why Markdown?
|
|
45
58
|
|
|
@@ -79,6 +92,7 @@ issy # Start the web UI
|
|
|
79
92
|
issy list # List open issues (roadmap order)
|
|
80
93
|
issy next # Show next issue to work on
|
|
81
94
|
issy create --title "Bug" # Create an issue
|
|
95
|
+
issy learn # Print AI-agent instructions
|
|
82
96
|
```
|
|
83
97
|
|
|
84
98
|
### Repository installation
|
|
@@ -132,7 +146,9 @@ issy update 0001 --before 0003 # Reposition in roadmap
|
|
|
132
146
|
issy update 0001 --body "New details" # Replace body content
|
|
133
147
|
issy close 0001 # Close issue
|
|
134
148
|
issy reopen 0001 --after 0004 # Reopen and place in roadmap
|
|
135
|
-
issy
|
|
149
|
+
issy learn # Print compact AI-agent instructions
|
|
150
|
+
issy learn roadmap # Print focused topic instructions
|
|
151
|
+
issy skill install # Install the AI bootstrap skill
|
|
136
152
|
issy migrate # Migrate from .issues/ to .issy/
|
|
137
153
|
issy --version # Check version
|
|
138
154
|
```
|
package/dist/cli.js
CHANGED
|
@@ -2399,6 +2399,10 @@ Commands:
|
|
|
2399
2399
|
|
|
2400
2400
|
next Show the next issue to work on
|
|
2401
2401
|
|
|
2402
|
+
learn [topic] Print AI-agent instructions for this issy version
|
|
2403
|
+
--all Print the full reference
|
|
2404
|
+
--list List focused topics
|
|
2405
|
+
|
|
2402
2406
|
create Create a new issue
|
|
2403
2407
|
--title, -t <t> Issue title
|
|
2404
2408
|
--body, -b <b> Markdown body content
|
|
@@ -2431,12 +2435,14 @@ Commands:
|
|
|
2431
2435
|
--first Insert at the beginning of the roadmap
|
|
2432
2436
|
--last Insert at the end of the roadmap
|
|
2433
2437
|
|
|
2434
|
-
skill install Install the issy skill
|
|
2438
|
+
skill install Install the issy bootstrap skill
|
|
2435
2439
|
|
|
2436
2440
|
Examples:
|
|
2437
2441
|
issy list
|
|
2438
2442
|
issy list --priority high --type bug
|
|
2439
2443
|
issy next
|
|
2444
|
+
issy learn
|
|
2445
|
+
issy learn roadmap
|
|
2440
2446
|
issy read 0001
|
|
2441
2447
|
issy create --title "Fix login bug" --type bug --priority high --after 0002
|
|
2442
2448
|
issy create --title "Add dark mode" --last
|
package/dist/main.js
CHANGED
|
@@ -2118,12 +2118,339 @@ function filterByQuery(issues, query) {
|
|
|
2118
2118
|
}
|
|
2119
2119
|
return result;
|
|
2120
2120
|
}
|
|
2121
|
+
// src/learn.ts
|
|
2122
|
+
function markdown(lines) {
|
|
2123
|
+
return `${lines.join(`
|
|
2124
|
+
`).trim()}
|
|
2125
|
+
`;
|
|
2126
|
+
}
|
|
2127
|
+
var compact = markdown([
|
|
2128
|
+
"# issy agent instructions",
|
|
2129
|
+
"",
|
|
2130
|
+
"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.",
|
|
2131
|
+
"",
|
|
2132
|
+
"## First action",
|
|
2133
|
+
"",
|
|
2134
|
+
"- If this request is about issue tracking, run `issy learn` before acting unless you already ran it in this session.",
|
|
2135
|
+
"- Use the returned guidance as the source of truth for this installed issy version.",
|
|
2136
|
+
"- For focused details, run `issy learn <topic>` instead of loading everything.",
|
|
2137
|
+
"",
|
|
2138
|
+
"## Essential workflow",
|
|
2139
|
+
"",
|
|
2140
|
+
"- List work: `issy list` or `issy list --all`.",
|
|
2141
|
+
'- Search work: `issy search "query"` or `issy search "query" --all`.',
|
|
2142
|
+
"- Read before changing: `issy read <id>`.",
|
|
2143
|
+
"- Pick next work: `issy next`.",
|
|
2144
|
+
'- Create work: `issy create --title "..." --type bug|improvement --priority high|medium|low <position>`.',
|
|
2145
|
+
"- Update work: `issy update <id> [options]`.",
|
|
2146
|
+
"- Close work: `issy close <id>` after the work is complete and verified.",
|
|
2147
|
+
"- Reopen work: `issy reopen <id> <position>`.",
|
|
2148
|
+
"",
|
|
2149
|
+
"## Issue authoring",
|
|
2150
|
+
"",
|
|
2151
|
+
"- Capture what needs to be done and why. Keep implementation details out unless the user provides them.",
|
|
2152
|
+
"- Good bodies usually include Problem/Overview, Proposed Solution, optional Acceptance Criteria, optional Verification, optional Future Considerations, and optional References.",
|
|
2153
|
+
"- Include verification guidance when possible so the implementing agent can prove completion with commands, UI flows, queries, or expected behavior.",
|
|
2154
|
+
"- Issues should be completable and verifiable in one focused session. Split only when a child issue is independently closeable.",
|
|
2155
|
+
"",
|
|
2156
|
+
"## Roadmap ordering",
|
|
2157
|
+
"",
|
|
2158
|
+
"- Open issues form a strict roadmap order.",
|
|
2159
|
+
"- When creating an issue and open issues already exist, include exactly one position flag: `--before <id>`, `--after <id>`, `--first`, or `--last`.",
|
|
2160
|
+
"- When reopening an issue and other open issues exist, include exactly one position flag.",
|
|
2161
|
+
"- Use dependency order: prerequisites first, dependent/user-facing work later. Use `--last` when placement is unclear.",
|
|
2162
|
+
"",
|
|
2163
|
+
"## Closing",
|
|
2164
|
+
"",
|
|
2165
|
+
"- Before closing, verify the issue is actually resolved.",
|
|
2166
|
+
"- If useful context was discovered, append a brief `## Resolution Notes` section before closing.",
|
|
2167
|
+
"- If the repo tracks issues in git, consider committing `.issy/` changes after mutations.",
|
|
2168
|
+
"",
|
|
2169
|
+
"## More focused context",
|
|
2170
|
+
"",
|
|
2171
|
+
"- `issy learn topics` lists available topics.",
|
|
2172
|
+
"- `issy learn authoring` covers issue writing rules.",
|
|
2173
|
+
"- `issy learn roadmap` covers placement rules.",
|
|
2174
|
+
"- `issy learn commands` covers CLI command syntax.",
|
|
2175
|
+
"- `issy learn hooks` covers hook files.",
|
|
2176
|
+
"- `issy learn agents` prints AGENTS.md and skill bootstrap guidance.",
|
|
2177
|
+
"- `issy learn --all` prints the full agent reference."
|
|
2178
|
+
]);
|
|
2179
|
+
var topics = [
|
|
2180
|
+
{
|
|
2181
|
+
name: "authoring",
|
|
2182
|
+
description: "Issue writing, sizing, verification, and resolution notes.",
|
|
2183
|
+
content: markdown([
|
|
2184
|
+
"# issy issue authoring",
|
|
2185
|
+
"",
|
|
2186
|
+
"Issues describe what needs to be done and why. Keep them high-level unless the user provides specific implementation details.",
|
|
2187
|
+
"",
|
|
2188
|
+
"## What to include",
|
|
2189
|
+
"",
|
|
2190
|
+
"- Problem/Overview: what is wrong or needed, usually one or two paragraphs.",
|
|
2191
|
+
"- Proposed Solution: high-level approach.",
|
|
2192
|
+
"- Acceptance Criteria: optional, from the user perspective.",
|
|
2193
|
+
"- Verification: optional but encouraged; explain how to prove the issue is resolved.",
|
|
2194
|
+
"- Future Considerations: optional related ideas for later.",
|
|
2195
|
+
"- References: optional links to related docs, issues, PRs, or resources.",
|
|
2196
|
+
"",
|
|
2197
|
+
"## Verification guidance",
|
|
2198
|
+
"",
|
|
2199
|
+
"When possible, include verification steps or hints. Agents should not claim work is done without evidence.",
|
|
2200
|
+
"",
|
|
2201
|
+
"Useful verification examples:",
|
|
2202
|
+
"",
|
|
2203
|
+
"- Commands to run and expected output, such as `bun test`, `npm test`, `curl`, or a project CLI.",
|
|
2204
|
+
"- UI flows to test, including browser automation when available.",
|
|
2205
|
+
"- Database queries or API calls that confirm state changes.",
|
|
2206
|
+
"- Specific behavior to observe.",
|
|
2207
|
+
"- Edge cases to check.",
|
|
2208
|
+
"",
|
|
2209
|
+
"## Implementation details rule",
|
|
2210
|
+
"",
|
|
2211
|
+
"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.",
|
|
2212
|
+
"",
|
|
2213
|
+
"The issue should capture the user intent. The engineer or agent implementing it can plan the implementation later.",
|
|
2214
|
+
"",
|
|
2215
|
+
"## Sizing",
|
|
2216
|
+
"",
|
|
2217
|
+
"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.",
|
|
2218
|
+
"",
|
|
2219
|
+
"## Closing with learnings",
|
|
2220
|
+
"",
|
|
2221
|
+
"When closing an issue, append a brief `## Resolution Notes` section if useful context was discovered during implementation:",
|
|
2222
|
+
"",
|
|
2223
|
+
"- Alternative approaches considered or rejected.",
|
|
2224
|
+
"- Unexpected gotchas or edge cases.",
|
|
2225
|
+
"- Decisions that differ from the original plan.",
|
|
2226
|
+
"- Useful context for future maintainers."
|
|
2227
|
+
])
|
|
2228
|
+
},
|
|
2229
|
+
{
|
|
2230
|
+
name: "roadmap",
|
|
2231
|
+
description: "Strict roadmap ordering and position flag rules.",
|
|
2232
|
+
aliases: ["ordering"],
|
|
2233
|
+
content: markdown([
|
|
2234
|
+
"# issy roadmap ordering",
|
|
2235
|
+
"",
|
|
2236
|
+
"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.",
|
|
2237
|
+
"",
|
|
2238
|
+
"## Required position flags",
|
|
2239
|
+
"",
|
|
2240
|
+
"- Creating an issue: if open issues already exist, provide exactly one of `--before <id>`, `--after <id>`, `--first`, or `--last`.",
|
|
2241
|
+
"- Reopening an issue: if other open issues exist, provide exactly one position flag.",
|
|
2242
|
+
"- Updating an issue: position flags are optional and reposition the issue when provided.",
|
|
2243
|
+
"- Never provide more than one position flag.",
|
|
2244
|
+
"",
|
|
2245
|
+
"## Choosing placement",
|
|
2246
|
+
"",
|
|
2247
|
+
"- Place prerequisites before dependent issues.",
|
|
2248
|
+
"- Place foundational or infrastructure work before user-facing work that depends on it.",
|
|
2249
|
+
"- Use `--first` for urgent work that should be tackled immediately.",
|
|
2250
|
+
"- Use `--last` when placement is unclear.",
|
|
2251
|
+
"- Use `--before <id>` or `--after <id>` for precise placement.",
|
|
2252
|
+
"",
|
|
2253
|
+
"## Useful commands",
|
|
2254
|
+
"",
|
|
2255
|
+
"- `issy list` shows open issues in roadmap order.",
|
|
2256
|
+
"- `issy next` shows the first open issue in roadmap order.",
|
|
2257
|
+
'- `issy create --title "..." --last` appends a new issue.',
|
|
2258
|
+
"- `issy update <id> --before <other-id>` repositions an issue.",
|
|
2259
|
+
"- `issy reopen <id> --after <other-id>` reopens and places a closed issue."
|
|
2260
|
+
])
|
|
2261
|
+
},
|
|
2262
|
+
{
|
|
2263
|
+
name: "commands",
|
|
2264
|
+
description: "CLI command syntax for issue operations.",
|
|
2265
|
+
aliases: ["cli", "reference"],
|
|
2266
|
+
content: markdown([
|
|
2267
|
+
"# issy CLI command reference",
|
|
2268
|
+
"",
|
|
2269
|
+
"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`.",
|
|
2270
|
+
"",
|
|
2271
|
+
"## List and search",
|
|
2272
|
+
"",
|
|
2273
|
+
"- `issy list`: list open issues in roadmap order.",
|
|
2274
|
+
"- `issy list --all`: include closed issues.",
|
|
2275
|
+
"- `issy list --priority high|medium|low`: filter by priority.",
|
|
2276
|
+
"- `issy list --scope small|medium|large`: filter by scope.",
|
|
2277
|
+
"- `issy list --type bug|improvement`: filter by type.",
|
|
2278
|
+
'- `issy list --search "keyword"`: fuzzy search while listing.',
|
|
2279
|
+
"- `issy list --sort roadmap|priority|created|updated|id`: choose sort order.",
|
|
2280
|
+
'- `issy search "query"`: fuzzy search open issues.',
|
|
2281
|
+
'- `issy search "query" --all`: include closed issues.',
|
|
2282
|
+
"",
|
|
2283
|
+
"## Read and choose work",
|
|
2284
|
+
"",
|
|
2285
|
+
"- `issy read <id>`: read a full issue.",
|
|
2286
|
+
"- `issy next`: show the next open issue in roadmap order.",
|
|
2287
|
+
"",
|
|
2288
|
+
"## Create",
|
|
2289
|
+
"",
|
|
2290
|
+
'- `issy create --title "Fix login bug" --type bug --priority high --after 0002`.',
|
|
2291
|
+
'- `issy create --title "Add dark mode" --type improvement --last --labels "ui, frontend"`.',
|
|
2292
|
+
'- `issy create --title "Urgent fix" --first`.',
|
|
2293
|
+
'- `issy create --title "Fix crash" --body "## Problem\\n\\nApp crashes on startup." --last`.',
|
|
2294
|
+
"",
|
|
2295
|
+
"Create options: `--title`, `--body`, `--priority`, `--scope`, `--type`, `--labels`, `--before`, `--after`, `--first`, `--last`.",
|
|
2296
|
+
"",
|
|
2297
|
+
"## Update",
|
|
2298
|
+
"",
|
|
2299
|
+
"- `issy update <id> --priority low`.",
|
|
2300
|
+
"- `issy update <id> --after 0003`.",
|
|
2301
|
+
"- `issy update <id> --first`.",
|
|
2302
|
+
'- `issy update <id> --labels "api, backend"`.',
|
|
2303
|
+
'- `issy update <id> --body "## Problem\\n\\nUpdated description."`.',
|
|
2304
|
+
"",
|
|
2305
|
+
"Update options: `--title`, `--body`, `--priority`, `--scope`, `--type`, `--labels`, `--before`, `--after`, `--first`, `--last`.",
|
|
2306
|
+
"",
|
|
2307
|
+
"## Close and reopen",
|
|
2308
|
+
"",
|
|
2309
|
+
"- `issy close <id>`.",
|
|
2310
|
+
"- `issy reopen <id> --last`.",
|
|
2311
|
+
"- `issy reopen <id> --after 0004`.",
|
|
2312
|
+
"",
|
|
2313
|
+
"When reopening and other open issues exist, include exactly one position flag."
|
|
2314
|
+
])
|
|
2315
|
+
},
|
|
2316
|
+
{
|
|
2317
|
+
name: "hooks",
|
|
2318
|
+
description: "Optional `.issy/` hook files that print agent context after mutations.",
|
|
2319
|
+
content: markdown([
|
|
2320
|
+
"# issy hooks",
|
|
2321
|
+
"",
|
|
2322
|
+
"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.",
|
|
2323
|
+
"",
|
|
2324
|
+
"## Hook files",
|
|
2325
|
+
"",
|
|
2326
|
+
"- `.issy/on_create.md`: printed after `issy create`.",
|
|
2327
|
+
"- `.issy/on_update.md`: printed after `issy update`.",
|
|
2328
|
+
"- `.issy/on_close.md`: printed after `issy close`.",
|
|
2329
|
+
"",
|
|
2330
|
+
"## Good hook uses",
|
|
2331
|
+
"",
|
|
2332
|
+
"- Remind agents to update docs for user-facing behavior changes.",
|
|
2333
|
+
"- Remind agents to run project-specific checks.",
|
|
2334
|
+
"- Add team conventions for issue mutations.",
|
|
2335
|
+
"- Surface release or changelog requirements.",
|
|
2336
|
+
"",
|
|
2337
|
+
"Hook content should be concise because it is injected directly into command output."
|
|
2338
|
+
])
|
|
2339
|
+
},
|
|
2340
|
+
{
|
|
2341
|
+
name: "agents",
|
|
2342
|
+
description: "Bootstrap instructions for AGENTS.md and shell skills.",
|
|
2343
|
+
aliases: ["skill", "bootstrap"],
|
|
2344
|
+
content: markdown([
|
|
2345
|
+
"# issy agent bootstrap",
|
|
2346
|
+
"",
|
|
2347
|
+
"`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.",
|
|
2348
|
+
"",
|
|
2349
|
+
"## Relevance rule",
|
|
2350
|
+
"",
|
|
2351
|
+
"Use issy when creating, reading, updating, listing, searching, prioritizing, closing, reopening, or choosing project issues, tasks, bugs, improvements, or roadmap work.",
|
|
2352
|
+
"",
|
|
2353
|
+
"## AGENTS.md snippet",
|
|
2354
|
+
"",
|
|
2355
|
+
"Add this to AGENTS.md:",
|
|
2356
|
+
"",
|
|
2357
|
+
"```md",
|
|
2358
|
+
"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.",
|
|
2359
|
+
"```",
|
|
2360
|
+
"",
|
|
2361
|
+
"## Skill bootstrap behavior",
|
|
2362
|
+
"",
|
|
2363
|
+
"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."
|
|
2364
|
+
])
|
|
2365
|
+
}
|
|
2366
|
+
];
|
|
2367
|
+
var aliases = new Map;
|
|
2368
|
+
for (const topic of topics) {
|
|
2369
|
+
aliases.set(topic.name, topic);
|
|
2370
|
+
for (const alias of topic.aliases ?? []) {
|
|
2371
|
+
aliases.set(alias, topic);
|
|
2372
|
+
}
|
|
2373
|
+
}
|
|
2374
|
+
function topicList() {
|
|
2375
|
+
return markdown([
|
|
2376
|
+
"# issy learn topics",
|
|
2377
|
+
"",
|
|
2378
|
+
"Run `issy learn <topic>` for focused agent context.",
|
|
2379
|
+
"",
|
|
2380
|
+
...topics.map((topic) => `- \`${topic.name}\`: ${topic.description}`),
|
|
2381
|
+
"",
|
|
2382
|
+
"Other options:",
|
|
2383
|
+
"",
|
|
2384
|
+
"- `issy learn`: compact default instructions.",
|
|
2385
|
+
"- `issy learn --all`: full reference.",
|
|
2386
|
+
"- `issy learn --help`: command usage."
|
|
2387
|
+
]);
|
|
2388
|
+
}
|
|
2389
|
+
function usage() {
|
|
2390
|
+
return markdown([
|
|
2391
|
+
"Usage: issy learn [topic] [options]",
|
|
2392
|
+
"",
|
|
2393
|
+
"Print AI-agent instructions for using issy.",
|
|
2394
|
+
"",
|
|
2395
|
+
"Topics:",
|
|
2396
|
+
...topics.map((topic) => ` ${topic.name.padEnd(10)} ${topic.description}`),
|
|
2397
|
+
"",
|
|
2398
|
+
"Options:",
|
|
2399
|
+
" --all Print the compact guidance and all topics",
|
|
2400
|
+
" --list List available topics",
|
|
2401
|
+
" --help, -h Show this help",
|
|
2402
|
+
"",
|
|
2403
|
+
"Examples:",
|
|
2404
|
+
" issy learn",
|
|
2405
|
+
" issy learn roadmap",
|
|
2406
|
+
" issy learn commands",
|
|
2407
|
+
" issy learn --all"
|
|
2408
|
+
]);
|
|
2409
|
+
}
|
|
2410
|
+
function getLearnOutput(args = []) {
|
|
2411
|
+
if (args.includes("--help") || args.includes("-h")) {
|
|
2412
|
+
return usage();
|
|
2413
|
+
}
|
|
2414
|
+
if (args.includes("--list")) {
|
|
2415
|
+
return topicList();
|
|
2416
|
+
}
|
|
2417
|
+
if (args.includes("--all")) {
|
|
2418
|
+
return [compact, ...topics.map((topic2) => topic2.content)].join(`
|
|
2419
|
+
---
|
|
2420
|
+
|
|
2421
|
+
`);
|
|
2422
|
+
}
|
|
2423
|
+
const topicArg = args.find((arg) => !arg.startsWith("-"));
|
|
2424
|
+
if (!topicArg) {
|
|
2425
|
+
return compact;
|
|
2426
|
+
}
|
|
2427
|
+
if (topicArg === "topics" || topicArg === "list") {
|
|
2428
|
+
return topicList();
|
|
2429
|
+
}
|
|
2430
|
+
const topic = aliases.get(topicArg);
|
|
2431
|
+
if (!topic) {
|
|
2432
|
+
throw new Error(`Unknown learn topic: ${topicArg}
|
|
2433
|
+
|
|
2434
|
+
${topicList()}`);
|
|
2435
|
+
}
|
|
2436
|
+
return topic.content;
|
|
2437
|
+
}
|
|
2438
|
+
|
|
2121
2439
|
// src/main.ts
|
|
2122
2440
|
var args = process.argv.slice(2);
|
|
2123
2441
|
if (args[0] === "--version" || args[0] === "-v") {
|
|
2124
2442
|
console.log(`issy v${process.env.ISSY_PKG_VERSION || "unknown"}`);
|
|
2125
2443
|
process.exit(0);
|
|
2126
2444
|
}
|
|
2445
|
+
if (args[0] === "learn") {
|
|
2446
|
+
try {
|
|
2447
|
+
process.stdout.write(getLearnOutput(args.slice(1)));
|
|
2448
|
+
} catch (error) {
|
|
2449
|
+
console.error(error instanceof Error ? error.message : "Failed to learn");
|
|
2450
|
+
process.exit(1);
|
|
2451
|
+
}
|
|
2452
|
+
process.exit(0);
|
|
2453
|
+
}
|
|
2127
2454
|
var issyDir2 = resolveIssyDir();
|
|
2128
2455
|
var issuesDir2 = join2(issyDir2, "issues");
|
|
2129
2456
|
process.env.ISSY_DIR = issyDir2;
|
|
@@ -2222,11 +2549,11 @@ function skill() {
|
|
|
2222
2549
|
Usage: issy skill <command>
|
|
2223
2550
|
|
|
2224
2551
|
Commands:
|
|
2225
|
-
install Install the issy skill for your AI coding assistant
|
|
2552
|
+
install Install the issy bootstrap skill for your AI coding assistant
|
|
2226
2553
|
`);
|
|
2227
2554
|
process.exit(subcommand ? 1 : 0);
|
|
2228
2555
|
}
|
|
2229
|
-
console.log(`Installing issy skill via skills CLI...
|
|
2556
|
+
console.log(`Installing issy bootstrap skill via skills CLI...
|
|
2230
2557
|
`);
|
|
2231
2558
|
try {
|
|
2232
2559
|
execSync("npx skills add miketromba/issy", { stdio: "inherit" });
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "issy",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.10.0",
|
|
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.
|
|
39
|
-
"@miketromba/issy-core": "^0.
|
|
38
|
+
"@miketromba/issy-app": "^0.10.0",
|
|
39
|
+
"@miketromba/issy-core": "^0.10.0",
|
|
40
40
|
"update-notifier": "^7.3.1"
|
|
41
41
|
}
|
|
42
42
|
}
|