arsenals 1.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.
- package/bin/arsenals.js +53 -0
- package/cybersecurity-agent/SKILL.md +165 -0
- package/cybersecurity-agent/references/dependency-cve.md +130 -0
- package/cybersecurity-agent/references/email-leaks.md +75 -0
- package/cybersecurity-agent/references/pr-review.md +136 -0
- package/cybersecurity-agent/references/repo-misconfig.md +170 -0
- package/cybersecurity-agent/references/sast.md +173 -0
- package/cybersecurity-agent/references/secret-scan.md +147 -0
- package/cybersecurity-agent/references/vector-ai-security.md +201 -0
- package/jira-to-code/SKILL.md +446 -0
- package/package.json +21 -0
- package/skill-seekers/SKILL.md +312 -0
- package/ticket-writer/SKILL.md +144 -0
|
@@ -0,0 +1,312 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: skill-seekers
|
|
3
|
+
description: >
|
|
4
|
+
Use this skill whenever the user wants Claude to learn, master, or absorb an unfamiliar framework, library,
|
|
5
|
+
internal tool, API, or large codebase from documentation, PDFs, or source code. Triggers when the user says
|
|
6
|
+
"learn this framework", "ingest these docs", "read this documentation", "master our internal library",
|
|
7
|
+
"study this codebase", "absorb this PDF", "understand our custom framework before implementing", or provides
|
|
8
|
+
a docs URL, a folder of PDFs, or a large repo and asks Claude to become fluent in it. Also triggers when another
|
|
9
|
+
skill or agent (e.g. Raphael / jira-to-code) needs domain knowledge it doesn't have before it can proceed.
|
|
10
|
+
The output is a distilled, reusable knowledge artifact that turns scattered source material into something
|
|
11
|
+
Claude can immediately apply.
|
|
12
|
+
---
|
|
13
|
+
|
|
14
|
+
# Skill Seekers
|
|
15
|
+
|
|
16
|
+
Dynamically ingest documentation, PDFs, or large codebases and distill them into a reusable knowledge artifact, so Claude can immediately operate inside an unfamiliar framework, internal tool, or proprietary stack.
|
|
17
|
+
|
|
18
|
+
This skill turns "I don't know your custom framework" into "I've read it, here's how it works, let's go" — in one pass.
|
|
19
|
+
|
|
20
|
+
---
|
|
21
|
+
|
|
22
|
+
## What this skill produces
|
|
23
|
+
|
|
24
|
+
The output adapts to the source, but always lands in one of these forms (often a combination):
|
|
25
|
+
|
|
26
|
+
```
|
|
27
|
+
1. KNOWLEDGE PACK (.md) → A structured, searchable reference Claude reads to operate fluently.
|
|
28
|
+
Default output. Lives at ./knowledge/[name]-knowledge.md
|
|
29
|
+
2. CHEATSHEET (.md) → A condensed quick-reference for fast recall (APIs, patterns, gotchas).
|
|
30
|
+
3. GENERATED SKILL (.skill or SKILL.md) → When the material is stable and reusable across sessions,
|
|
31
|
+
package the knowledge as its own installable skill.
|
|
32
|
+
```
|
|
33
|
+
|
|
34
|
+
Decision rule:
|
|
35
|
+
- **One-off task** (learn it for this ticket) → Knowledge Pack + Cheatsheet
|
|
36
|
+
- **Will be reused often** (your team's core internal framework) → also generate an installable Skill
|
|
37
|
+
- Always ask the user at the end: "Want me to package this as a permanent skill?"
|
|
38
|
+
|
|
39
|
+
---
|
|
40
|
+
|
|
41
|
+
## Phase Overview
|
|
42
|
+
|
|
43
|
+
```
|
|
44
|
+
Phase 1: SCOPE → Identify sources, set boundaries, estimate size
|
|
45
|
+
Phase 2: INGEST → Pull in docs / PDFs / code systematically
|
|
46
|
+
Phase 3: DISTILL → Extract concepts, APIs, patterns, conventions, gotchas
|
|
47
|
+
Phase 4: STRUCTURE → Organize into the Knowledge Pack
|
|
48
|
+
Phase 5: VERIFY → Self-test comprehension, fill gaps, flag uncertainty
|
|
49
|
+
Phase 6: DELIVER → Output artifact(s) + offer to package as a skill
|
|
50
|
+
```
|
|
51
|
+
|
|
52
|
+
---
|
|
53
|
+
|
|
54
|
+
## Phase 1: SCOPE — Define what to ingest
|
|
55
|
+
|
|
56
|
+
**Goal:** Know the boundaries before pulling anything in, so the ingest is targeted, not a firehose.
|
|
57
|
+
|
|
58
|
+
### Determine sources
|
|
59
|
+
|
|
60
|
+
| Source type | How to access |
|
|
61
|
+
|---|---|
|
|
62
|
+
| Hosted docs (URL) | Fetch the entry page, map the nav/sitemap, list the sections to read |
|
|
63
|
+
| PDFs / local files | List files, get page counts / sizes, identify which are relevant |
|
|
64
|
+
| Code repository | Map the directory tree, identify entry points, public API surface, and docs folders |
|
|
65
|
+
|
|
66
|
+
### Set boundaries (ask if unclear)
|
|
67
|
+
- What specifically does the user need to master? (the whole framework, or just the auth module?)
|
|
68
|
+
- Is there a version that matters? (v2 docs vs v3)
|
|
69
|
+
- Depth: API-level fluency, or deep internals?
|
|
70
|
+
|
|
71
|
+
### Size estimate & strategy
|
|
72
|
+
```
|
|
73
|
+
INGEST PLAN
|
|
74
|
+
───────────
|
|
75
|
+
Sources : [list — URLs, file paths, repo path]
|
|
76
|
+
Estimated size: [page count / file count / LOC]
|
|
77
|
+
Scope : [full | scoped to: ...]
|
|
78
|
+
Strategy : [exhaustive read | breadth-first map then deep-dive relevant parts]
|
|
79
|
+
Version : [if relevant]
|
|
80
|
+
```
|
|
81
|
+
|
|
82
|
+
> **Large-source rule:** If the source is huge (a 500-page PDF, a 10k-file repo, an entire docs site), do NOT read everything linearly. Map the structure first, then read the high-value parts (core concepts, public API, patterns) and skim the rest. State this strategy upfront.
|
|
83
|
+
|
|
84
|
+
---
|
|
85
|
+
|
|
86
|
+
## Phase 2: INGEST — Pull in the material
|
|
87
|
+
|
|
88
|
+
**Goal:** Get the source content into context systematically, prioritizing signal over completeness.
|
|
89
|
+
|
|
90
|
+
### For hosted docs (URLs)
|
|
91
|
+
1. Fetch the landing/overview page
|
|
92
|
+
2. Extract the navigation structure (sitemap, sidebar, table of contents)
|
|
93
|
+
3. Prioritize reading order: **Concepts → Getting Started → Core API → Guides → Advanced → Reference**
|
|
94
|
+
4. Fetch pages in priority order; for reference-heavy pages, extract the API signatures and skip prose
|
|
95
|
+
|
|
96
|
+
```bash
|
|
97
|
+
# If in Claude Code with a local docs mirror
|
|
98
|
+
find . -name "*.md" -o -name "*.mdx" | grep -i "doc" | head -50
|
|
99
|
+
```
|
|
100
|
+
|
|
101
|
+
### For PDFs / local files
|
|
102
|
+
```bash
|
|
103
|
+
# Inventory first
|
|
104
|
+
ls -la *.pdf
|
|
105
|
+
# Use the pdf-reading approach: get a content inventory before extracting everything
|
|
106
|
+
```
|
|
107
|
+
- Read the table of contents / outline first
|
|
108
|
+
- Extract text section by section, prioritizing concept and API chapters
|
|
109
|
+
- For scanned PDFs, note if OCR is needed
|
|
110
|
+
- Pull out diagrams/tables descriptions — they often encode the architecture
|
|
111
|
+
|
|
112
|
+
### For code repositories
|
|
113
|
+
```bash
|
|
114
|
+
# 1. Map the structure
|
|
115
|
+
find . -maxdepth 3 -type d -not -path "*/node_modules/*" -not -path "*/vendor/*" \
|
|
116
|
+
-not -path "*/.git/*" 2>/dev/null
|
|
117
|
+
|
|
118
|
+
# 2. Read the manifest & README first
|
|
119
|
+
cat README.md package.json composer.json pyproject.toml go.mod 2>/dev/null | head -100
|
|
120
|
+
|
|
121
|
+
# 3. Find the public API surface / entry points
|
|
122
|
+
find . -name "index.*" -o -name "main.*" -o -name "*.d.ts" 2>/dev/null | grep -v node_modules | head -20
|
|
123
|
+
|
|
124
|
+
# 4. Find the docs and examples folders
|
|
125
|
+
find . -type d \( -iname "docs" -o -iname "examples" -o -iname "samples" \) 2>/dev/null | head -10
|
|
126
|
+
```
|
|
127
|
+
- Read entry points and public exports first — that's the contract
|
|
128
|
+
- Read 3–5 representative implementations to learn the internal style
|
|
129
|
+
- Read the tests — they document intended behavior better than comments
|
|
130
|
+
|
|
131
|
+
### Ingest discipline
|
|
132
|
+
- Track what you've read so you don't re-read or miss sections
|
|
133
|
+
- If context fills up, distill-as-you-go (Phase 3) rather than holding everything raw
|
|
134
|
+
- Note anything you couldn't access (paywalled, auth-required, broken link) — don't silently skip
|
|
135
|
+
|
|
136
|
+
---
|
|
137
|
+
|
|
138
|
+
## Phase 3: DISTILL — Extract what matters
|
|
139
|
+
|
|
140
|
+
**Goal:** Convert raw material into structured knowledge. This is where ingestion becomes understanding.
|
|
141
|
+
|
|
142
|
+
For everything ingested, extract:
|
|
143
|
+
|
|
144
|
+
```
|
|
145
|
+
CONCEPTS
|
|
146
|
+
- The mental model: what is this framework/tool, what problem does it solve, core abstractions
|
|
147
|
+
- Key terminology and what each term means in THIS framework's vocabulary
|
|
148
|
+
|
|
149
|
+
PUBLIC API / INTERFACE
|
|
150
|
+
- Main entry points, classes, functions, hooks, endpoints
|
|
151
|
+
- Signatures with parameter meanings and return types
|
|
152
|
+
- The "you'll use these 20% of things 80% of the time" core set
|
|
153
|
+
|
|
154
|
+
PATTERNS & CONVENTIONS
|
|
155
|
+
- The idiomatic way to do common tasks ("the framework wants you to...")
|
|
156
|
+
- Naming conventions, file organization, configuration style
|
|
157
|
+
- How errors are handled, how things are tested, how things are extended
|
|
158
|
+
|
|
159
|
+
INTEGRATION POINTS
|
|
160
|
+
- How it connects to other systems (DB, auth, HTTP, events)
|
|
161
|
+
- Required setup / config / environment
|
|
162
|
+
|
|
163
|
+
GOTCHAS & FOOTGUNS
|
|
164
|
+
- Common mistakes, anti-patterns, deprecated approaches
|
|
165
|
+
- Version-specific quirks
|
|
166
|
+
- Things that look like they should work but don't
|
|
167
|
+
|
|
168
|
+
EXAMPLES
|
|
169
|
+
- 2–4 canonical, copy-adaptable code examples of the most common operations
|
|
170
|
+
```
|
|
171
|
+
|
|
172
|
+
> **Vocabulary rule:** Internal/custom frameworks often reuse common words with special meaning ("Resource", "Module", "Action" may mean something specific here). Capture the framework's own definitions, not the generic ones.
|
|
173
|
+
|
|
174
|
+
---
|
|
175
|
+
|
|
176
|
+
## Phase 4: STRUCTURE — Build the Knowledge Pack
|
|
177
|
+
|
|
178
|
+
**Goal:** Organize the distilled knowledge into a clean, navigable artifact.
|
|
179
|
+
|
|
180
|
+
### Knowledge Pack template
|
|
181
|
+
```markdown
|
|
182
|
+
# [Framework/Tool Name] — Knowledge Pack
|
|
183
|
+
> Source: [URLs/files/repo] · Version: [x] · Ingested: [date] · Scope: [full/partial]
|
|
184
|
+
|
|
185
|
+
## 1. Mental Model
|
|
186
|
+
[2–4 paragraphs: what it is, what problem it solves, core abstractions]
|
|
187
|
+
|
|
188
|
+
## 2. Vocabulary
|
|
189
|
+
[Term → meaning in this framework]
|
|
190
|
+
|
|
191
|
+
## 3. Core API (the 80/20)
|
|
192
|
+
[The most-used entry points with signatures and one-line purpose each]
|
|
193
|
+
|
|
194
|
+
## 4. Idiomatic Patterns
|
|
195
|
+
[How the framework wants common things done, with short examples]
|
|
196
|
+
|
|
197
|
+
## 5. Setup & Configuration
|
|
198
|
+
[What's needed to use it — env, config, dependencies]
|
|
199
|
+
|
|
200
|
+
## 6. Integration Points
|
|
201
|
+
[How it talks to DB / auth / HTTP / other systems]
|
|
202
|
+
|
|
203
|
+
## 7. Gotchas & Footguns
|
|
204
|
+
[Mistakes to avoid, version quirks, deprecated things]
|
|
205
|
+
|
|
206
|
+
## 8. Canonical Examples
|
|
207
|
+
[2–4 copy-adaptable examples of the most common operations]
|
|
208
|
+
|
|
209
|
+
## 9. Open Questions / Not Covered
|
|
210
|
+
[What wasn't accessible or remains uncertain — be honest]
|
|
211
|
+
|
|
212
|
+
## 10. Source Map
|
|
213
|
+
[Where each piece of knowledge came from, for deeper lookup later]
|
|
214
|
+
```
|
|
215
|
+
|
|
216
|
+
Keep it dense but scannable. This file is meant to be **read by Claude (or Raphael) at the start of a task** to gain instant fluency, and by a human as a reference.
|
|
217
|
+
|
|
218
|
+
### Optional Cheatsheet
|
|
219
|
+
A 1-page condensed version: just the API table, the top patterns, and the top gotchas. For fast recall.
|
|
220
|
+
|
|
221
|
+
---
|
|
222
|
+
|
|
223
|
+
## Phase 5: VERIFY — Test comprehension & flag gaps
|
|
224
|
+
|
|
225
|
+
**Goal:** Don't claim mastery you don't have. Pressure-test the knowledge.
|
|
226
|
+
|
|
227
|
+
### Self-test
|
|
228
|
+
Pose and answer (internally) the questions a developer would actually hit:
|
|
229
|
+
- "How do I do [the most common task] in this framework?"
|
|
230
|
+
- "How do I handle errors / validation / auth the way this framework expects?"
|
|
231
|
+
- "What's the idiomatic way to extend or configure it?"
|
|
232
|
+
- "What would break if I did it the naive/generic way?"
|
|
233
|
+
|
|
234
|
+
If any answer is shaky, go back to Phase 2 and read more on that area.
|
|
235
|
+
|
|
236
|
+
### Honesty about gaps
|
|
237
|
+
Explicitly list:
|
|
238
|
+
- Sections that weren't accessible
|
|
239
|
+
- Areas where the docs were ambiguous or contradictory
|
|
240
|
+
- Version uncertainty
|
|
241
|
+
- Anything inferred vs directly stated
|
|
242
|
+
|
|
243
|
+
> **No false confidence rule:** It's far better to say "the docs didn't cover X clearly" than to invent how X works. A flagged gap is useful; a confident hallucination is dangerous.
|
|
244
|
+
|
|
245
|
+
---
|
|
246
|
+
|
|
247
|
+
## Phase 6: DELIVER — Output & optionally package
|
|
248
|
+
|
|
249
|
+
**Goal:** Hand over the artifact and decide whether it becomes permanent.
|
|
250
|
+
|
|
251
|
+
1. Write the Knowledge Pack to `./knowledge/[name]-knowledge.md` (Claude Code) or present it inline / as a downloadable file (Claude.ai)
|
|
252
|
+
2. Optionally write the Cheatsheet
|
|
253
|
+
3. Give a short summary: what was ingested, what the user can now ask Claude to do with it, and what the known gaps are
|
|
254
|
+
4. Offer packaging:
|
|
255
|
+
> "This knowledge is reusable. Want me to package it as a permanent installable skill so you don't have to re-ingest it next time?"
|
|
256
|
+
If yes, generate a `SKILL.md` whose description triggers on the framework's name and whose body is the Knowledge Pack.
|
|
257
|
+
|
|
258
|
+
### Handoff to Raphael / other agents
|
|
259
|
+
If this ingestion was requested so another agent (like Raphael) can implement against the framework, end with:
|
|
260
|
+
```
|
|
261
|
+
KNOWLEDGE READY → [agent]
|
|
262
|
+
─────────────────────────
|
|
263
|
+
Framework : [name]
|
|
264
|
+
Knowledge at: ./knowledge/[name]-knowledge.md
|
|
265
|
+
Use this to : [what the agent can now do — e.g. "implement tickets using our internal Resource framework idiomatically"]
|
|
266
|
+
Known gaps : [list]
|
|
267
|
+
```
|
|
268
|
+
|
|
269
|
+
---
|
|
270
|
+
|
|
271
|
+
## Running Modes
|
|
272
|
+
|
|
273
|
+
| Mode | Behavior |
|
|
274
|
+
|---|---|
|
|
275
|
+
| **Full ingest** | All 6 phases. Use for a framework you'll work in repeatedly. |
|
|
276
|
+
| **Quick brief** | Phases 1–3 only, output a Cheatsheet. Use when you just need fast orientation. |
|
|
277
|
+
| **Just-in-time** | Triggered mid-task by another agent. Scope to exactly what's needed, produce a focused Knowledge Pack section, hand back. |
|
|
278
|
+
| **Refresh** | Re-ingest only changed/new sections of a previously ingested source; update the existing Knowledge Pack. |
|
|
279
|
+
|
|
280
|
+
---
|
|
281
|
+
|
|
282
|
+
## Environment Notes
|
|
283
|
+
|
|
284
|
+
- **Claude Code:** Can read local files/repos directly, write the Knowledge Pack to `./knowledge/`, and persist it across sessions. Preferred for large codebases and PDF folders.
|
|
285
|
+
- **Claude.ai:** Fetch URLs via web tools, accept uploaded PDFs/files, output the Knowledge Pack as a downloadable artifact. For huge sources, ingest in scoped batches across messages.
|
|
286
|
+
|
|
287
|
+
---
|
|
288
|
+
|
|
289
|
+
## Error Handling
|
|
290
|
+
|
|
291
|
+
| Situation | Action |
|
|
292
|
+
|---|---|
|
|
293
|
+
| Docs require login/paywall | Flag it, ask user to paste the relevant pages or provide access |
|
|
294
|
+
| PDF is scanned (no text layer) | Note OCR is needed; use OCR before extracting |
|
|
295
|
+
| Source is enormous (>500pg / >10k files) | Switch to breadth-first map + targeted deep-dive; state the strategy |
|
|
296
|
+
| Docs contradict the code | Trust the code for behavior, note the doc discrepancy |
|
|
297
|
+
| Version ambiguity | Ask which version, or ingest the one in the repo and label it |
|
|
298
|
+
| Context fills mid-ingest | Distill-as-you-go; write partial Knowledge Pack, continue in next pass |
|
|
299
|
+
| Conflicting info across sources | Present both, mark which source said what, flag for user |
|
|
300
|
+
|
|
301
|
+
---
|
|
302
|
+
|
|
303
|
+
## Quick Reference Cheatsheet
|
|
304
|
+
|
|
305
|
+
```
|
|
306
|
+
Phase 1 → Scope → sources, boundaries, size, strategy
|
|
307
|
+
Phase 2 → Ingest → docs/PDFs/code, signal over completeness
|
|
308
|
+
Phase 3 → Distill → concepts, API, patterns, gotchas, vocabulary
|
|
309
|
+
Phase 4 → Structure→ Knowledge Pack (mental model → examples → gaps)
|
|
310
|
+
Phase 5 → Verify → self-test, flag gaps honestly, no false confidence
|
|
311
|
+
Phase 6 → Deliver → output artifact + offer to package as permanent skill
|
|
312
|
+
```
|
|
@@ -0,0 +1,144 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: ticket-writer
|
|
3
|
+
description: >
|
|
4
|
+
Use this skill ONLY on explicit invocation via "/ticket" or "write a ticket for [X]" /
|
|
5
|
+
"draft a ticket for [X]". Given just a ticket title, scans the current repo/codebase to
|
|
6
|
+
ground the ticket in what actually exists, then produces a ready-to-paste Jira-style
|
|
7
|
+
ticket with Description, Acceptance Criteria, and Technical Implementation sections.
|
|
8
|
+
This is the inverse of the jira-to-code skill (which goes ticket → code); this one goes
|
|
9
|
+
title → ticket. Do not trigger on generic phrasing like "explain this feature" or
|
|
10
|
+
"what's the plan for X" — only on explicit ticket-writing requests.
|
|
11
|
+
---
|
|
12
|
+
|
|
13
|
+
# Ticket Writer Skill
|
|
14
|
+
|
|
15
|
+
Takes a bare ticket title and turns it into a fully-formed ticket by reading the codebase
|
|
16
|
+
for context — so the ticket reflects what's actually there, not just a guess from the title
|
|
17
|
+
alone. Output is chat-only markdown, ready to paste straight into Jira. No files are created.
|
|
18
|
+
|
|
19
|
+
---
|
|
20
|
+
|
|
21
|
+
## Workflow
|
|
22
|
+
|
|
23
|
+
```
|
|
24
|
+
1. PARSE TITLE → Infer ticket type (Bug/Feature/Task) and likely scope from the title
|
|
25
|
+
2. SCAN REPO → Find relevant files, existing patterns, current behavior
|
|
26
|
+
3. DRAFT TICKET → Description, Acceptance Criteria, Technical Implementation
|
|
27
|
+
4. OUTPUT → Clean markdown block in chat, nothing else
|
|
28
|
+
```
|
|
29
|
+
|
|
30
|
+
No checkpoints, no file output — this is meant to be fast. Only pause and ask the user if
|
|
31
|
+
the title is genuinely too ambiguous to scope (see Error Handling).
|
|
32
|
+
|
|
33
|
+
---
|
|
34
|
+
|
|
35
|
+
## Step 1 — Parse the Title
|
|
36
|
+
|
|
37
|
+
From the title alone, infer:
|
|
38
|
+
- **Type**: Bug (title implies broken/incorrect behavior) / Feature (new capability) /
|
|
39
|
+
Task (refactor, chore, infra)
|
|
40
|
+
- **Likely domain**: which part of the system this touches (auth, billing, a specific
|
|
41
|
+
admin panel/site, an integration, etc.) — use whatever domain vocabulary appears in the
|
|
42
|
+
title to guide the repo scan in Step 2
|
|
43
|
+
|
|
44
|
+
If the user provides more than a title (extra context, a pasted Slack thread, a rough
|
|
45
|
+
description), fold that in — treat the title as the anchor but use all provided context.
|
|
46
|
+
|
|
47
|
+
---
|
|
48
|
+
|
|
49
|
+
## Step 2 — Scan the Repo
|
|
50
|
+
|
|
51
|
+
**Goal:** ground the ticket in what's actually in the codebase, the same way `jira-to-code`
|
|
52
|
+
grounds implementation in the codebase — just run in reverse.
|
|
53
|
+
|
|
54
|
+
```bash
|
|
55
|
+
# Stack + structure (skip if already known from this conversation)
|
|
56
|
+
find . -maxdepth 2 -not -path '*/vendor/*' -not -path '*/node_modules/*' -not -path '*/.git/*'
|
|
57
|
+
|
|
58
|
+
# Search for anything matching the title's domain keywords
|
|
59
|
+
grep -rn "[keyword]" --include="*.php" -l | head -20
|
|
60
|
+
```
|
|
61
|
+
|
|
62
|
+
Use the title's keywords to find:
|
|
63
|
+
- **Existing related code**: models, Actions, DTOs, Filament resources, controllers, routes
|
|
64
|
+
already touching this area
|
|
65
|
+
- **Current behavior**: if it's a bug, what does the code currently do (trace the actual
|
|
66
|
+
logic, don't guess)
|
|
67
|
+
- **Existing patterns to follow**: how similar features/fixes were structured elsewhere in
|
|
68
|
+
this codebase (Actions pattern, DDD boundaries, spatie/laravel-data DTOs, Filament
|
|
69
|
+
resource conventions — match what this project already does)
|
|
70
|
+
- **What's missing**: for a Feature ticket, confirm the capability genuinely doesn't exist
|
|
71
|
+
yet (avoid writing a ticket for something already built)
|
|
72
|
+
|
|
73
|
+
If nothing relevant turns up, say so plainly in the draft rather than inventing context.
|
|
74
|
+
|
|
75
|
+
---
|
|
76
|
+
|
|
77
|
+
## Step 3 — Draft the Ticket
|
|
78
|
+
|
|
79
|
+
### Description
|
|
80
|
+
2–4 sentences, plain language. What is being asked for and why, written from what the
|
|
81
|
+
title + repo scan actually support — not padded with generic filler. For a bug, describe
|
|
82
|
+
the current (wrong) behavior found in the code. For a feature, describe the gap and the
|
|
83
|
+
proposed capability.
|
|
84
|
+
|
|
85
|
+
### Acceptance Criteria
|
|
86
|
+
- Numbered, each one independently testable
|
|
87
|
+
- Written as observable outcomes ("Given X, when Y, then Z" or plain checklist form —
|
|
88
|
+
match whichever style fits the ticket, checklist is the default)
|
|
89
|
+
- Cover the happy path, at least one edge case, and any explicit non-functional requirement
|
|
90
|
+
implied by the title (e.g. performance, permissions)
|
|
91
|
+
- If the repo scan revealed an existing partial implementation, one AC should cover
|
|
92
|
+
completing/fixing that specific gap rather than restating the obvious
|
|
93
|
+
|
|
94
|
+
### Technical Implementation
|
|
95
|
+
- Grounded in what Step 2 actually found — name real files/classes/patterns, not generic
|
|
96
|
+
advice
|
|
97
|
+
- Structure as: **Affected areas** (files/modules likely touched), **Approach** (2–4
|
|
98
|
+
sentences on how this fits existing patterns — Actions/DTOs/Filament conventions as
|
|
99
|
+
relevant), **Open questions** (anything the repo scan couldn't resolve — flag rather
|
|
100
|
+
than guess)
|
|
101
|
+
- This section is a starting point for whoever implements it (including `jira-to-code`
|
|
102
|
+
downstream) — not a full implementation plan. Keep it tight.
|
|
103
|
+
|
|
104
|
+
---
|
|
105
|
+
|
|
106
|
+
## Step 4 — Output Format
|
|
107
|
+
|
|
108
|
+
Output only this block, nothing before or after except a one-line intro:
|
|
109
|
+
|
|
110
|
+
```markdown
|
|
111
|
+
## [Title as given]
|
|
112
|
+
|
|
113
|
+
**Type**: [Bug | Feature | Task]
|
|
114
|
+
|
|
115
|
+
### Description
|
|
116
|
+
[2-4 sentences]
|
|
117
|
+
|
|
118
|
+
### Acceptance Criteria
|
|
119
|
+
- [ ] AC 1
|
|
120
|
+
- [ ] AC 2
|
|
121
|
+
- [ ] AC 3
|
|
122
|
+
|
|
123
|
+
### Technical Implementation
|
|
124
|
+
**Affected areas**
|
|
125
|
+
- `[path/file]` — [why]
|
|
126
|
+
- `[path/file]` — [why]
|
|
127
|
+
|
|
128
|
+
**Approach**
|
|
129
|
+
[2-4 sentences, grounded in repo patterns found]
|
|
130
|
+
|
|
131
|
+
**Open questions**
|
|
132
|
+
- [question, if any — omit section if none]
|
|
133
|
+
```
|
|
134
|
+
|
|
135
|
+
---
|
|
136
|
+
|
|
137
|
+
## Error Handling
|
|
138
|
+
|
|
139
|
+
| Situation | Action |
|
|
140
|
+
|---|---|
|
|
141
|
+
| Title is too vague to scope (e.g. "Fix bug") | Ask one clarifying question: *"Which part of the app — can you point me to a file, feature, or error?"* Don't guess a domain. |
|
|
142
|
+
| No relevant code found for the domain | Say so in Description ("no existing code found touching X — this appears to be net-new") rather than inventing file paths |
|
|
143
|
+
| Title implies something already fully implemented | Flag it before drafting: *"This looks like it may already be built — [file/path] appears to handle this. Still want a ticket, or is this about extending it?"* |
|
|
144
|
+
| Repo not available / no code context in this session | Draft the ticket from the title alone, clearly note "⚠️ No repo scan — grounded in title only" at the top of the Technical Implementation section |
|