LCORE-1576: Document feature design process: howtos, templates, skills & CLI tool#1399
Conversation
|
Note Reviews pausedIt looks like this branch is under active development. To avoid overwhelming you with review comments due to an influx of new commits, CodeRabbit has automatically paused this review. You can configure this behavior by changing the Use the following commands to manage reviews:
Use the checkboxes below for quick actions:
No actionable comments were generated in the recent review. 🎉 ℹ️ Recent review info⚙️ Run configurationConfiguration used: Path: .coderabbit.yaml Review profile: CHILL Plan: Pro Run ID: 📒 Files selected for processing (1)
✅ Files skipped from review due to trivial changes (1)
WalkthroughAdds Claude command definitions and templates for spikes/specs, contributor how‑tos for running spikes and organizing PoC output, a new Changes
Sequence Diagram(s)sequenceDiagram
actor Developer
participant CLI as "file-jiras.sh"
participant SpikeDoc as "Spike Document (/tmp/jiras/*)"
participant Editor as "Editor ($EDITOR)"
participant JIRA as "JIRA REST API"
Developer->>CLI: sh dev-tools/file-jiras.sh <spike-doc.md> <parent-ticket>
CLI->>SpikeDoc: parse spike doc -> create `/tmp/jiras/NN-title.md`
Developer->>CLI: use view/edit/drop commands
CLI->>Editor: open selected file in $EDITOR
Developer->>CLI: select `file` to create issues
CLI->>JIRA: search for duplicates (by summary)
JIRA-->>CLI: return search results
CLI->>Developer: prompt about duplicates
Developer->>CLI: confirm
CLI->>JIRA: POST /rest/api/3/issue (ADF payload)
JIRA-->>CLI: 201 Created + issue key
CLI->>Developer: print created issue URL/key
Estimated code review effort🎯 4 (Complex) | ⏱️ ~45 minutes 🚥 Pre-merge checks | ✅ 2 | ❌ 1❌ Failed checks (1 warning)
✅ Passed checks (2 passed)
✏️ Tip: You can configure your own custom pre-merge checks in the settings. ✨ Finishing Touches🧪 Generate unit tests (beta)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
|
@tisnik Could you PTAL? |
There was a problem hiding this comment.
Actionable comments posted: 12
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.
Inline comments:
In `@dev-tools/file-jiras.sh`:
- Line 1: Replace the POSIX shell shebang with a Bash shebang (e.g. change
"#!/bin/sh" to "#!/usr/bin/env bash") because the script uses Bash-only features
like local declarations (several "local" variables throughout the script);
update the first line accordingly so functions and locales using "local" (and
any other Bash-specific constructs) run under Bash rather than dash.
- Around line 152-169: The duplicate-detection Python snippet in
dev-tools/file-jiras.sh currently swallows all errors and writes '0' to the
count file, treating failures as "no duplicates"; change the exception handler
in the python3 -c block so it writes '-1' to count_file instead of '0', and then
update the shell logic that reads dup_count_file (the check that currently only
tests count > 0) to detect '-1' as an error and abort/raise a visible failure
before proceeding; reference the python snippet, variables
count_file/dup_count_file/dup_check and the surrounding shell check that gates
creating new JIRAs.
- Around line 146-149: The dup_check curl invocation (dup_check=$(curl ...))
currently lacks timeouts and fail handling; update that curl to include -sS
--fail --connect-timeout 10 --max-time 30 so failures surface and the call can't
hang, and also update the other Jira API curl used for ticket creation/status
checking (the second curl in the script that performs the create/request and
whose result is later inspected) to include -sS --connect-timeout 10 --max-time
30 to add timeout protection (and --fail on the create call if you want it to
error on non-2xx responses).
- Around line 292-310: The inline Python payload generation (the payload
variable created by the python3 -c call) embeds shell variables ($title,
$adf_desc) inside a triple-quoted Python string which breaks when titles contain
quotes (e.g., '''), so change the invocation to pass the values as safe
arguments (or via stdin) and consume them in Python via sys.argv (or sys.stdin)
before calling json.dumps; update references to $title and $adf_desc to be
passed as arguments to the python3 process and use sys.argv[1], sys.argv[2] (and
PARENT_TICKET passed similarly or read from env) inside the Python snippet to
build the dict, ensuring proper JSON serialization without embedding unescaped
content into the Python source.
In `@docs/contributing_guide.md`:
- Around line 121-151: Add the new "Feature design process" section to the
top-level Table of Contents by inserting a TOC entry that links to the "##
Feature design process" heading (use the heading text or its generated anchor),
ensuring the entry appears in the same format and position as other section
links; update the TOC block near the top of contributing_guide.md so navigation
includes this section and run any TOC generation/formatting tooling or adjust
anchor syntax to match existing links.
In `@docs/contributing/howto-organize-poc-output.md`:
- Around line 14-23: The fenced code block showing the poc-results directory
tree is missing a language tag; update the block that begins with ``` and
contains the directory tree to use a language hint (e.g., ```text) so markdown
renderers treat it as plain text, by replacing the opening fence with ```text
for the directory-tree block.
In `@docs/contributing/howto-run-a-spike.md`:
- Around line 119-121: Two fenced code blocks in howto-run-a-spike.md (the block
containing the github URL and the checklist block later) are missing a language
identifier which triggers MD040; update each opening triple-backtick to include
a language (e.g., change ``` to ```text) so the URL block (the snippet showing
https://github.com/ORG/REPO/...) and the checklist block (the checklist starting
with "[ ] Branch created off upstream/main") are labeled as text.
In `@docs/contributing/templates/jira-ticket-template.md`:
- Around line 15-18: The fenced code block that contains the lines starting
"Read the \"[section]\" section in docs/design/<feature>/<feature>.md." should
include a language identifier (e.g., use ```text) to satisfy MD040 and improve
editor rendering; update the opening fence from ``` to ```text in the template
snippet so the block becomes a text code fence.
In `@docs/contributing/templates/spec-doc-template.md`:
- Around line 40-42: Replace the language-less fenced code block containing
"TODO: flow diagram" with a language-specified block (for example change the
opening ``` to ```text) so the block reads ```text followed by "TODO: flow
diagram" and closing ```, which will satisfy MD040 and remove the lint warning.
In `@docs/contributing/templates/spike-pr-template.md`:
- Around line 28-29: The footer uses ambiguous GitHub-style syntax "Closes #
LCORE-XXXX" and "Related Issue # LCORE-XXXX"; update the template to avoid
accidental GitHub auto-closing by replacing those lines with an explicit,
unambiguous format such as "Closes: LCORE-XXXX (Jira)" and "Related: LCORE-XXXX
(Jira)" or "Jira: https://<your-jira-host>/browse/LCORE-XXXX" so the intent and
tracker are clear (replace LCORE-XXXX with the actual ticket key).
In `@docs/contributing/templates/spike-template.md`:
- Around line 57-60: The untyped fenced code block in
docs/contributing/templates/spike-template.md (the block containing `Read the
"[section]" section in docs/design/<feature>/<feature>.md.` and `Key files:
[files].`) triggers MD040; update that fenced block to declare a language (e.g.,
change the opening ``` to ```text) so the code fence is typed, keeping the block
content unchanged.
- Around line 68-70: The lone hyphen under the "**Important**: The PoC
diverges..." line is being parsed as a setext underline; locate that heading
text and replace the single "-" placeholder with a non-heading-safe placeholder
such as an explicit bullet like "- (list PoC divergences here)" or an HTML
comment/escaped character (e.g., "<!-- placeholder -->" or "\-") so the line is
not interpreted as a setext heading underline.
ℹ️ Review info
⚙️ Run configuration
Configuration used: Path: .coderabbit.yaml
Review profile: CHILL
Plan: Pro
Run ID: a0b0ae59-4620-40ea-81f9-9d43550e14a3
📒 Files selected for processing (12)
.claude/commands/file-jiras.md.claude/commands/spec-doc.md.claude/commands/spike.mddev-tools/file-jiras.shdocs/contributing/howto-organize-poc-output.mddocs/contributing/howto-run-a-spike.mddocs/contributing/howto-write-a-spec-doc.mddocs/contributing/templates/jira-ticket-template.mddocs/contributing/templates/spec-doc-template.mddocs/contributing/templates/spike-pr-template.mddocs/contributing/templates/spike-template.mddocs/contributing_guide.md
| Closes # LCORE-XXXX | ||
| Related Issue # LCORE-XXXX |
There was a problem hiding this comment.
Issue-closing footer syntax is ambiguous for Jira keys.
Closes # LCORE-XXXX looks like GitHub issue syntax but uses a Jira key format.
Proposed fix
-Closes # LCORE-XXXX
-Related Issue # LCORE-XXXX
+Closes LCORE-XXXX
+Related: LCORE-XXXX📝 Committable suggestion
‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.
| Closes # LCORE-XXXX | |
| Related Issue # LCORE-XXXX | |
| Closes LCORE-XXXX | |
| Related: LCORE-XXXX |
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.
In `@docs/contributing/templates/spike-pr-template.md` around lines 28 - 29, The
footer uses ambiguous GitHub-style syntax "Closes # LCORE-XXXX" and "Related
Issue # LCORE-XXXX"; update the template to avoid accidental GitHub auto-closing
by replacing those lines with an explicit, unambiguous format such as "Closes:
LCORE-XXXX (Jira)" and "Related: LCORE-XXXX (Jira)" or "Jira:
https://<your-jira-host>/browse/LCORE-XXXX" so the intent and tracker are clear
(replace LCORE-XXXX with the actual ticket key).
There was a problem hiding this comment.
Actionable comments posted: 2
♻️ Duplicate comments (1)
dev-tools/file-jiras.sh (1)
146-149:⚠️ Potential issue | 🟠 MajorDuplicate check can still fail open on Jira/API errors.
At Line 148,
|| echo "{}"turns request failures into “no duplicates”, so the guard at Line 175 won’t trigger and duplicates can be filed.Suggested fix
- dup_check=$(curl -sS --connect-timeout 10 --max-time 30 \ + if ! dup_check=$(curl -sS --fail --connect-timeout 10 --max-time 30 \ -u "$JIRA_EMAIL:$JIRA_TOKEN" \ - "$JIRA_INSTANCE/rest/api/3/search/jql?jql=project%3D${project_key}%20AND%20summary~%22${url_title}%22&fields=key,summary&maxResults=5" 2>/dev/null || echo "{}") + "$JIRA_INSTANCE/rest/api/3/search/jql?jql=project%3D${project_key}%20AND%20summary~%22${url_title}%22&fields=key,summary&maxResults=5" 2>/dev/null); then + echo " Duplicate check request failed; skipping ticket for safety." >&2 + return 1 + fi🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed. In `@dev-tools/file-jiras.sh` around lines 146 - 149, The current curl call that populates dup_check swallows errors with "|| echo \"{}\"", causing API failures to be treated as "no duplicates"; change this so failures don't fail open: remove the "|| echo \"{}\"" fallback, capture curl's exit status (e.g., run curl into dup_check and check $? or use a temp file), and if curl fails log the error and exit non-zero (or set an explicit error flag) instead of proceeding to the duplicate-creation guard; reference the dup_check variable and the duplicate guard logic that checks dup_check to ensure API errors abort or are handled as failures rather than as "no duplicates."
🧹 Nitpick comments (1)
dev-tools/file-jiras.sh (1)
106-106: Replacels-based parsing to address SC2012 and improve robustness.Line 106 (
ls ... | wc -l) and Line 133 (ls ... | sed -n) are brittle; usefind+ sort for deterministic and safe handling.Suggested fix
-TICKET_COUNT=$(ls "$JIRA_DIR"/*.md 2>/dev/null | wc -l) +TICKET_COUNT=$(find "$JIRA_DIR" -maxdepth 1 -type f -name '*.md' | wc -l) @@ get_file_by_number() { - ls "$JIRA_DIR"/*.md 2>/dev/null | sed -n "${1}p" + find "$JIRA_DIR" -maxdepth 1 -type f -name '*.md' | sort | sed -n "${1}p" }Also applies to: 133-133
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed. In `@dev-tools/file-jiras.sh` at line 106, Replace brittle ls parsing: for TICKET_COUNT assignment (and the later listing logic around the code that uses sed -n) use find with -maxdepth 1 and -type f -name '*.md' to robustly discover files, pipe through sort for deterministic ordering before counting or processing, and then use wc -l (or handle null-delimited output where appropriate) instead of relying on ls output; update the TICKET_COUNT assignment and the listing/sed-using block to use find ... | sort so filenames with spaces/newlines or edge cases are handled safely.
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.
Inline comments:
In `@dev-tools/file-jiras.sh`:
- Around line 393-404: The call to launch the editor uses an unquoted expansion
of the files variable which breaks on filenames with spaces/special chars; in
the block that builds files via get_file_by_number and variable files, either
change files to be an array (e.g., append each resolved f to an array and invoke
$editor "${files[@]}") or, if keeping a single string, quote the expansion when
invoking the editor (use "$files") and ensure filenames are joined with proper
spacing/escaping; update the invocation in the branch containing files and the
surrounding logic that populates files (references: files variable,
get_file_by_number, and $editor) so filenames with spaces are preserved.
- Around line 120-125: The loop over "$JIRA_DIR"/*.md can break when no files
match because the glob expands to a literal string under set -euo pipefail;
update the logic used by show_summary (and the loop using JIRA_DIR and head -1)
to handle an empty directory: either enable and later disable nullglob around
the loop (shopt -s nullglob/shopt -u nullglob) or build an array from the glob,
check if its length is zero and skip printing; ensure the code checks for no
matches before calling head -1/printf so the script doesn’t exit when all .md
files are dropped.
---
Duplicate comments:
In `@dev-tools/file-jiras.sh`:
- Around line 146-149: The current curl call that populates dup_check swallows
errors with "|| echo \"{}\"", causing API failures to be treated as "no
duplicates"; change this so failures don't fail open: remove the "|| echo
\"{}\"" fallback, capture curl's exit status (e.g., run curl into dup_check and
check $? or use a temp file), and if curl fails log the error and exit non-zero
(or set an explicit error flag) instead of proceeding to the duplicate-creation
guard; reference the dup_check variable and the duplicate guard logic that
checks dup_check to ensure API errors abort or are handled as failures rather
than as "no duplicates."
---
Nitpick comments:
In `@dev-tools/file-jiras.sh`:
- Line 106: Replace brittle ls parsing: for TICKET_COUNT assignment (and the
later listing logic around the code that uses sed -n) use find with -maxdepth 1
and -type f -name '*.md' to robustly discover files, pipe through sort for
deterministic ordering before counting or processing, and then use wc -l (or
handle null-delimited output where appropriate) instead of relying on ls output;
update the TICKET_COUNT assignment and the listing/sed-using block to use find
... | sort so filenames with spaces/newlines or edge cases are handled safely.
ℹ️ Review info
⚙️ Run configuration
Configuration used: Path: .coderabbit.yaml
Review profile: CHILL
Plan: Pro
Run ID: f27c2d1a-4ea8-43e5-9e1b-ae7cdd2a5dc2
📒 Files selected for processing (1)
dev-tools/file-jiras.sh
| files="" | ||
| for n in $(echo "$args" | tr ',' ' '); do | ||
| f=$(get_file_by_number "$n") | ||
| if [ -n "$f" ]; then | ||
| files="$files $f" | ||
| else | ||
| echo " No ticket #$n" | ||
| fi | ||
| done | ||
| if [ -n "$files" ]; then | ||
| $editor $files | ||
| fi |
There was a problem hiding this comment.
🧩 Analysis chain
🏁 Script executed:
cd dev-tools && head -410 file-jiras.sh | tail -30 | cat -nRepository: lightspeed-core/lightspeed-stack
Length of output: 1212
🏁 Script executed:
# Find the exact file and verify lines 393-404
git ls-files | grep -E 'file-jiras\.sh$'Repository: lightspeed-core/lightspeed-stack
Length of output: 99
🏁 Script executed:
# Read the specific lines to verify
sed -n '393,404p' dev-tools/file-jiras.sh | cat -nRepository: lightspeed-core/lightspeed-stack
Length of output: 585
🏁 Script executed:
# Get more context - read lines 380-410 to understand the function better
sed -n '380,410p' dev-tools/file-jiras.sh | cat -nRepository: lightspeed-core/lightspeed-stack
Length of output: 1266
Unquoted file list in editor call breaks with filenames containing spaces or special characters (SC2086).
At line 403, $editor $files expands without quotes, causing word-splitting that breaks edge-case filenames. The "all" case on line 388 correctly quotes the glob pattern ("$JIRA_DIR"/*.md), but this branch lacks the same protection.
Suggested fix
- files=""
+ files=()
for n in $(echo "$args" | tr ',' ' '); do
f=$(get_file_by_number "$n")
if [ -n "$f" ]; then
- files="$files $f"
+ files+=("$f")
else
echo " No ticket #$n"
fi
done
- if [ -n "$files" ]; then
- $editor $files
+ if [ ${`#files`[@]} -gt 0 ]; then
+ $editor "${files[@]}"
fi🧰 Tools
🪛 GitHub Actions: Shell check
[warning] 403-403: ShellCheck (SC2086): Double quote to prevent globbing and word splitting. Suggestion: "$editor "$files"".
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.
In `@dev-tools/file-jiras.sh` around lines 393 - 404, The call to launch the
editor uses an unquoted expansion of the files variable which breaks on
filenames with spaces/special chars; in the block that builds files via
get_file_by_number and variable files, either change files to be an array (e.g.,
append each resolved f to an array and invoke $editor "${files[@]}") or, if
keeping a single string, quote the expansion when invoking the editor (use
"$files") and ensure filenames are joined with proper spacing/escaping; update
the invocation in the branch containing files and the surrounding logic that
populates files (references: files variable, get_file_by_number, and $editor) so
filenames with spaces are preserved.
There was a problem hiding this comment.
🧹 Nitpick comments (2)
dev-tools/file-jiras.sh (1)
269-271: Code block parsing strips language specifier incorrectly.
para.strip("")removes all leading/trailing backticks character-by-character. For a block like `` ```python\ncode\n``` ``, the result ispython\ncodeinstead of justcode`, including the language specifier in the code text.This is a minor limitation for the current use case (simple JIRA descriptions), but worth noting if code blocks with language specs are common in spike docs.
Potential fix (optional)
# Code block if para.startswith("```"): - code = para.strip("`").strip() + lines = para.split('\n') + # Remove opening fence (```lang) and closing fence (```) + code_lines = lines[1:-1] if lines[-1].strip().startswith("```") else lines[1:] + code = '\n'.join(code_lines) return {"type": "codeBlock", "content": [{"type": "text", "text": code}]}🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed. In `@dev-tools/file-jiras.sh` around lines 269 - 271, The codeBlock parsing currently uses para.strip("`") which removes backticks and can leave the language specifier (e.g., "python") in the captured code; change the logic in the para.startswith("```") branch to split para into lines, drop the first line (the opening fence, which may include a language token) and drop the final fence if present, then join the remaining lines into code and assign to the existing code variable before returning the {"type":"codeBlock"...} object; update the code variable creation (referencing para and code) so opening/closing fences and any language token are removed rather than stripped character-by-character.docs/contributing/templates/spike-template.md (1)
37-41: Heading level jump (h1→h3) is intentional for tooling compatibility, consider documenting.The
### LCORE-????heading on line 41 jumps from h1 (# Proposed JIRAs) to h3, triggering MD001. This is intentional—dev-tools/file-jiras.shparses exactly^### (LCORE-\?{4}.*?)$to extract JIRA sections.Options:
- Add a markdown lint disable comment to suppress the warning
- Add a brief HTML comment explaining the h3 is required by the filing tool
Option 1: Suppress lint
# Proposed JIRAs TODO: One subsection per JIRA. Each JIRA's agentic tool instruction should point to the spec doc (the permanent reference), not this spike doc. +<!-- markdownlint-disable-next-line MD001 --> ### LCORE-???? TODO fill in title🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed. In `@docs/contributing/templates/spike-template.md` around lines 37 - 41, The h1→h3 heading jump under "# Proposed JIRAs" (the line with "### LCORE-???? TODO fill in title") intentionally triggers MD001 because dev-tools/file-jiras.sh expects exact "### (LCORE-????...)" headings; fix by adding either a markdownlint disable comment (e.g., <!-- markdownlint-disable MD001 --> before the h3 and re-enable after) or a brief HTML comment immediately above the h3 documenting that the h3 is required by dev-tools/file-jiras.sh so reviewers and linters understand the exception; update the template near the "### LCORE-????" line accordingly.
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.
Nitpick comments:
In `@dev-tools/file-jiras.sh`:
- Around line 269-271: The codeBlock parsing currently uses para.strip("`")
which removes backticks and can leave the language specifier (e.g., "python") in
the captured code; change the logic in the para.startswith("```") branch to
split para into lines, drop the first line (the opening fence, which may include
a language token) and drop the final fence if present, then join the remaining
lines into code and assign to the existing code variable before returning the
{"type":"codeBlock"...} object; update the code variable creation (referencing
para and code) so opening/closing fences and any language token are removed
rather than stripped character-by-character.
In `@docs/contributing/templates/spike-template.md`:
- Around line 37-41: The h1→h3 heading jump under "# Proposed JIRAs" (the line
with "### LCORE-???? TODO fill in title") intentionally triggers MD001 because
dev-tools/file-jiras.sh expects exact "### (LCORE-????...)" headings; fix by
adding either a markdownlint disable comment (e.g., <!-- markdownlint-disable
MD001 --> before the h3 and re-enable after) or a brief HTML comment immediately
above the h3 documenting that the h3 is required by dev-tools/file-jiras.sh so
reviewers and linters understand the exception; update the template near the
"### LCORE-????" line accordingly.
ℹ️ Review info
⚙️ Run configuration
Configuration used: Path: .coderabbit.yaml
Review profile: CHILL
Plan: Pro
Run ID: ca42ead3-aea1-4cc4-ac87-bd56eece1518
📒 Files selected for processing (8)
dev-tools/file-jiras.shdocs/contributing/howto-organize-poc-output.mddocs/contributing/howto-run-a-spike.mddocs/contributing/howto-write-a-spec-doc.mddocs/contributing/templates/jira-ticket-template.mddocs/contributing/templates/spec-doc-template.mddocs/contributing/templates/spike-template.mddocs/contributing_guide.md
✅ Files skipped from review due to trivial changes (6)
- docs/contributing/templates/jira-ticket-template.md
- docs/contributing_guide.md
- docs/contributing/howto-organize-poc-output.md
- docs/contributing/templates/spec-doc-template.md
- docs/contributing/howto-write-a-spec-doc.md
- docs/contributing/howto-run-a-spike.md
|
|
||
| **Description**: TODO | ||
|
|
||
| **Scope**: TODO |
There was a problem hiding this comment.
What do we expect to write in Scope, that is not already written in Description?
Or is this section supposed to be Out of Scope to explicitly state what's out of scope for this task?
I don't see this section in the example compaction-conversation.md doc either.
|
|
||
| ```text | ||
| Read the "[section]" section in docs/design/<feature>/<feature>.md. | ||
| Key files: [files]. |
There was a problem hiding this comment.
Is this "key files in the project" or something else?
There was a problem hiding this comment.
what type of ticket is this template is supposed to be applied to? Feature? Epic? Story?
LCORE-1576: Document feature design process
Documents the end-to-end process for taking a feature from proposal to filed implementation tickets.
What's in this PR
Contributing guide update (
docs/contributing_guide.md):Howtos (
docs/contributing/):howto-run-a-spike.md— step-by-step process for running a spikehowto-write-a-spec-doc.md— how to create and maintain a feature spec dochowto-organize-poc-output.md— structuring PoC validation resultsTemplates (
docs/contributing/templates/):spike-template.md— spike doc fill-in templatespec-doc-template.md— spec doc fill-in templatespike-pr-template.md— PR description template for spike PRsjira-ticket-template.md— JIRA sub-ticket formatAI agent skills (
.claude/commands/):/spike— run a design spike/spec-doc— create a feature spec doc/file-jiras— parse proposed JIRAs from a spike doc and file themJIRA filing tool (
dev-tools/file-jiras.sh):Context
These were developed alongside the LCORE-1311 conversation compaction spike (PR #1328). The spike served as the first use of this process, and examples throughout the howtos reference it.
Closes # LCORE-1576
Summary by CodeRabbit
New Features
Documentation