@codyswann/lisa 1.17.0 → 1.18.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.
@@ -15,6 +15,10 @@
15
15
  # Marker files: $PLANS_DIR/.active-plan-<session-id> contain the absolute path to the
16
16
  # active plan file. Stale markers (>24h) are cleaned up on each invocation.
17
17
  #
18
+ # Dedup: Session ID dedup is scoped to the ## Sessions section only, not the entire
19
+ # file. This prevents false positives when session IDs appear elsewhere in plan content
20
+ # (e.g., scratchpad directory paths like /private/tmp/claude-501/.../SESSION_ID/...).
21
+ #
18
22
  # Debug logging: All key decisions are logged to $PLANS_DIR/.track-plan-debug.log for
19
23
  # diagnostics if session IDs land in the wrong plan file.
20
24
  #
@@ -123,9 +127,11 @@ if [[ ! -f "$PLAN_FILE" ]]; then
123
127
  exit 0
124
128
  fi
125
129
 
126
- # Check if session ID already exists in the file (dedup)
127
- if grep -qF "$SESSION_ID" "$PLAN_FILE" 2>/dev/null; then
128
- log_debug "dedup: session ID already in $PLAN_FILE (resolved via $RESOLUTION_METHOD), skipping write"
130
+ # Check if session ID already exists in the ## Sessions section (dedup)
131
+ # Only search within the Sessions section to avoid false positives from session IDs
132
+ # appearing in plan content (e.g., scratchpad paths contain session IDs)
133
+ if sed -n '/^## Sessions$/,$p' "$PLAN_FILE" 2>/dev/null | grep -qF "$SESSION_ID"; then
134
+ log_debug "dedup: session ID already in $PLAN_FILE sessions section (resolved via $RESOLUTION_METHOD), skipping write"
129
135
  exit 0
130
136
  fi
131
137
 
@@ -10,7 +10,7 @@ When making a plan:
10
10
  - Always make sure you understand the correct versions of third party libraries
11
11
  - Always save the plan with a name befitting the actual plan contents
12
12
  - Always look for code that can be reused for implementation
13
- - The plan MUST including written instructions to create a task list using TaskCreate for each task. The list should contain items related to the plan and specify that subagents should handle as many in parallel as possible. The following should always be included in the task list
13
+ - The plan MUST include written instructions to create a task list using TaskCreate for each task (following the Task Creation Specification below). The list should contain items related to the plan and specify that subagents should handle as many in parallel as possible. The following should always be included in the task list
14
14
  - update/add/remove tests, containing the tests that need to get updated, added or removed
15
15
  - update/add/remove documentation (jsdocs, markdown files, etc), containing the documentation that need to get updated, added or removed
16
16
  - archive the plan (to be completed after all other tasks have been completed). This task should explcitly say to:
@@ -27,3 +27,53 @@ When making a plan:
27
27
  - If referencing a ticket (jira, linear, etc), always add a comment to the ticket with the finalized plan
28
28
  - The `## Sessions` section in plan files is auto-maintained by the `track-plan-sessions.sh` hook — do not manually edit it
29
29
 
30
+ ## Task Creation Specification
31
+
32
+ When plans include TaskCreate instructions, each task must use this format:
33
+
34
+ ### Parameters
35
+
36
+ - **subject**: Imperative form (e.g., "Add logout button to header")
37
+ - **activeForm**: Present continuous form (e.g., "Adding logout button to header")
38
+
39
+ ### Description Template
40
+
41
+ Every task description must be a markdown document with these sections:
42
+
43
+ **Type:** Bug | Task | Epic | Story
44
+
45
+ **Description:** Clear description based on type (Bug: symptoms/root cause; Story: Gherkin Given/When/Then; Task: clear goal; Epic: goal with sub-tasks)
46
+
47
+ **Acceptance Criteria:** Checkbox list of completion criteria
48
+
49
+ **Relevant Research:** Code references, patterns, architecture constraints extracted from research
50
+
51
+ **Skills to Invoke:** `/coding-philosophy` is always required, plus other applicable skills
52
+
53
+ **Implementation Details:** Files to modify, functions to implement, edge cases
54
+
55
+ **Testing Requirements:** Unit tests (with `describe/it` structure), Integration tests, E2E tests (or "N/A")
56
+
57
+ **Verification:** Every task MUST have empirical verification (see `verfication.md` for types). Include: verification type, proof command, and expected output.
58
+
59
+ **Learnings:** On task completion, use `TaskUpdate` to save discoveries: `metadata: { learnings: ["Learning 1", ...] }`
60
+
61
+ ### Metadata
62
+
63
+ ```json
64
+ {
65
+ "plan": "<plan-name>",
66
+ "type": "bug|task|epic|story",
67
+ "skills": ["/coding-philosophy", ...],
68
+ "verification": {
69
+ "type": "test|ui-recording|test-coverage|api-test|manual-check|documentation",
70
+ "command": "the proof command",
71
+ "expected": "what success looks like"
72
+ }
73
+ }
74
+ ```
75
+
76
+ ### Task Sizing
77
+
78
+ Each task must be small enough to have a **single, specific verification**. Ask: "Can I prove this is done with ONE command?" Split tasks that require multiple verifications.
79
+
package/package.json CHANGED
@@ -85,7 +85,7 @@
85
85
  },
86
86
  "resolutions": {},
87
87
  "name": "@codyswann/lisa",
88
- "version": "1.17.0",
88
+ "version": "1.18.0",
89
89
  "description": "Claude Code governance framework that applies guardrails, guidance, and automated enforcement to projects",
90
90
  "main": "dist/index.js",
91
91
  "bin": {