@codyswann/lisa 1.12.9 → 1.14.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/all/copy-overwrite/.claude/commands/git/commit-and-submit-pr.md +2 -3
- package/all/copy-overwrite/.claude/commands/git/commit.md +2 -43
- package/all/copy-overwrite/.claude/commands/git/prune.md +2 -30
- package/all/copy-overwrite/.claude/commands/git/submit-pr.md +2 -45
- package/all/copy-overwrite/.claude/commands/jira/create.md +2 -45
- package/all/copy-overwrite/.claude/commands/jira/verify.md +2 -29
- package/all/copy-overwrite/.claude/commands/lisa/review-implementation.md +4 -206
- package/all/copy-overwrite/.claude/commands/project/add-test-coverage.md +4 -53
- package/all/copy-overwrite/.claude/commands/project/archive.md +4 -6
- package/all/copy-overwrite/.claude/commands/project/bootstrap.md +4 -25
- package/all/copy-overwrite/.claude/commands/project/debrief.md +4 -40
- package/all/copy-overwrite/.claude/commands/project/document.md +4 -48
- package/all/copy-overwrite/.claude/commands/project/execute.md +4 -64
- package/all/copy-overwrite/.claude/commands/project/fix-linter-error.md +4 -62
- package/all/copy-overwrite/.claude/commands/project/implement.md +4 -35
- package/all/copy-overwrite/.claude/commands/project/local-code-review.md +4 -85
- package/all/copy-overwrite/.claude/commands/project/lower-code-complexity.md +3 -58
- package/all/copy-overwrite/.claude/commands/project/plan.md +4 -175
- package/all/copy-overwrite/.claude/commands/project/reduce-max-lines-per-function.md +4 -61
- package/all/copy-overwrite/.claude/commands/project/reduce-max-lines.md +4 -58
- package/all/copy-overwrite/.claude/commands/project/research.md +4 -162
- package/all/copy-overwrite/.claude/commands/project/review.md +4 -45
- package/all/copy-overwrite/.claude/commands/project/setup.md +4 -52
- package/all/copy-overwrite/.claude/commands/project/verify.md +4 -38
- package/all/copy-overwrite/.claude/commands/pull-request/review.md +4 -69
- package/all/copy-overwrite/.claude/commands/sonarqube/check.md +3 -3
- package/all/copy-overwrite/.claude/commands/sonarqube/fix.md +6 -3
- package/all/copy-overwrite/.claude/commands/tasks/load.md +4 -85
- package/all/copy-overwrite/.claude/commands/tasks/sync.md +4 -106
- package/all/copy-overwrite/.claude/skills/git-commit/SKILL.md +49 -0
- package/all/copy-overwrite/.claude/skills/git-commit-and-submit-pr/SKILL.md +9 -0
- package/all/copy-overwrite/.claude/skills/git-prune/SKILL.md +35 -0
- package/all/copy-overwrite/.claude/skills/git-submit-pr/SKILL.md +45 -0
- package/all/copy-overwrite/.claude/skills/jira-create/SKILL.md +42 -0
- package/all/copy-overwrite/.claude/skills/jira-verify/SKILL.md +30 -0
- package/all/copy-overwrite/.claude/skills/lisa-review-implementation/SKILL.md +210 -0
- package/all/copy-overwrite/.claude/skills/project-add-test-coverage/SKILL.md +58 -0
- package/all/copy-overwrite/.claude/skills/project-archive/SKILL.md +10 -0
- package/all/copy-overwrite/.claude/skills/project-bootstrap/SKILL.md +29 -0
- package/all/copy-overwrite/.claude/skills/project-debrief/SKILL.md +44 -0
- package/all/copy-overwrite/.claude/skills/project-document/SKILL.md +51 -0
- package/all/copy-overwrite/.claude/skills/project-execute/SKILL.md +68 -0
- package/all/copy-overwrite/.claude/skills/project-fix-linter-error/SKILL.md +67 -0
- package/all/copy-overwrite/.claude/skills/project-implement/SKILL.md +39 -0
- package/all/copy-overwrite/.claude/skills/project-local-code-review/SKILL.md +89 -0
- package/all/copy-overwrite/.claude/skills/project-lower-code-complexity/SKILL.md +62 -0
- package/all/copy-overwrite/.claude/skills/project-plan/SKILL.md +179 -0
- package/all/copy-overwrite/.claude/skills/project-reduce-max-lines/SKILL.md +63 -0
- package/all/copy-overwrite/.claude/skills/project-reduce-max-lines-per-function/SKILL.md +66 -0
- package/all/copy-overwrite/.claude/skills/project-research/SKILL.md +166 -0
- package/all/copy-overwrite/.claude/skills/project-review/SKILL.md +49 -0
- package/all/copy-overwrite/.claude/skills/project-setup/SKILL.md +56 -0
- package/all/copy-overwrite/.claude/skills/project-verify/SKILL.md +42 -0
- package/all/copy-overwrite/.claude/skills/pull-request-review/SKILL.md +73 -0
- package/all/copy-overwrite/.claude/skills/sonarqube-check/SKILL.md +11 -0
- package/all/copy-overwrite/.claude/skills/sonarqube-fix/SKILL.md +8 -0
- package/all/copy-overwrite/.claude/skills/tasks-load/SKILL.md +89 -0
- package/all/copy-overwrite/.claude/skills/tasks-sync/SKILL.md +109 -0
- package/cdk/copy-overwrite/jest.cdk.ts +71 -0
- package/cdk/copy-overwrite/jest.config.ts +28 -0
- package/cdk/copy-overwrite/tsconfig.cdk.json +14 -0
- package/cdk/copy-overwrite/tsconfig.json +3 -0
- package/cdk/create-only/tsconfig.local.json +4 -0
- package/expo/copy-overwrite/jest.config.ts +28 -0
- package/expo/copy-overwrite/jest.expo.ts +76 -0
- package/expo/copy-overwrite/tsconfig.expo.json +9 -0
- package/expo/copy-overwrite/tsconfig.json +3 -0
- package/expo/create-only/tsconfig.local.json +9 -0
- package/nestjs/copy-overwrite/jest.config.ts +28 -0
- package/nestjs/copy-overwrite/jest.nestjs.ts +89 -0
- package/nestjs/copy-overwrite/tsconfig.build.json +5 -0
- package/nestjs/copy-overwrite/tsconfig.json +5 -0
- package/nestjs/copy-overwrite/tsconfig.nestjs.json +13 -0
- package/nestjs/copy-overwrite/tsconfig.spec.json +7 -0
- package/nestjs/create-only/tsconfig.local.json +6 -0
- package/package.json +1 -1
- package/typescript/copy-overwrite/jest.base.ts +112 -0
- package/typescript/copy-overwrite/jest.config.ts +34 -0
- package/typescript/copy-overwrite/jest.typescript.ts +72 -0
- package/typescript/copy-overwrite/tsconfig.base.json +15 -0
- package/typescript/copy-overwrite/tsconfig.json +5 -0
- package/typescript/copy-overwrite/tsconfig.typescript.json +11 -0
- package/typescript/create-only/jest.config.local.ts +30 -0
- package/typescript/create-only/jest.thresholds.json +8 -0
- package/typescript/create-only/tsconfig.local.json +6 -0
|
@@ -0,0 +1,166 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: project-research
|
|
3
|
+
description: This skill should be used when conducting comprehensive research across the codebase and web relevant to a project. It spawns parallel research agents, documents existing code patterns, testing patterns, and architecture, and compiles findings into a research.md file for the planning phase.
|
|
4
|
+
allowed-tools: ["Read", "Write", "Bash", "Glob", "Grep", "Task", "TaskCreate", "TaskUpdate", "TaskList", "WebSearch", "WebFetch"]
|
|
5
|
+
argument-hint: "<project-directory>"
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
# Research Codebase
|
|
9
|
+
|
|
10
|
+
Conduct comprehensive research across the codebase and web to help create an implementation plan for the brief in $ARGUMENTS.
|
|
11
|
+
|
|
12
|
+
## Goals
|
|
13
|
+
|
|
14
|
+
1. Determine what existing documentation in the codebase will be needed
|
|
15
|
+
2. Determine any gaps in the spec that would prevent fulfilling acceptance criteria
|
|
16
|
+
3. Determine potential pitfalls (performance, security concerns)
|
|
17
|
+
4. Determine reusable code, functions, and modules in the codebase
|
|
18
|
+
5. Determine testing patterns and locations (frameworks, conventions, examples)
|
|
19
|
+
6. Determine documentation patterns (JSDoc, DB comments, GraphQL descriptions)
|
|
20
|
+
|
|
21
|
+
## Critical Rule
|
|
22
|
+
|
|
23
|
+
**THE ONLY JOB IS TO DOCUMENT AND EXPLAIN THE CODEBASE AS IT EXISTS TODAY**
|
|
24
|
+
|
|
25
|
+
- DO NOT suggest improvements or changes
|
|
26
|
+
- DO NOT perform root cause analysis
|
|
27
|
+
- DO NOT propose future enhancements
|
|
28
|
+
- DO NOT critique or identify problems
|
|
29
|
+
- ONLY describe what exists, where it exists, how it works, and how components interact
|
|
30
|
+
|
|
31
|
+
## Workflow Tasks
|
|
32
|
+
|
|
33
|
+
Create workflow tracking tasks with `metadata: { "project": "<project-name>", "phase": "research" }`:
|
|
34
|
+
|
|
35
|
+
1. Read mentioned files
|
|
36
|
+
2. Analyze and decompose
|
|
37
|
+
3. Spawn research agents
|
|
38
|
+
4. Wait and synthesize
|
|
39
|
+
5. Generate document
|
|
40
|
+
6. Commit
|
|
41
|
+
|
|
42
|
+
## Step 1: Read Mentioned Files
|
|
43
|
+
|
|
44
|
+
Read any directly mentioned files FULLY first (no limit/offset). This ensures full context before spawning sub-tasks.
|
|
45
|
+
|
|
46
|
+
## Step 2: Analyze and Decompose
|
|
47
|
+
|
|
48
|
+
- Break down the brief into composable research areas
|
|
49
|
+
- Identify specific components, patterns, or concepts to investigate
|
|
50
|
+
- Consider which directories, files, or architectural patterns are relevant
|
|
51
|
+
|
|
52
|
+
## Step 3: Spawn Research Agents
|
|
53
|
+
|
|
54
|
+
Spawn parallel sub-agent tasks for comprehensive research:
|
|
55
|
+
|
|
56
|
+
**For codebase research:**
|
|
57
|
+
- **codebase-locator**: Find WHERE files and components live
|
|
58
|
+
- **codebase-analyzer**: Understand HOW specific code works
|
|
59
|
+
- **codebase-pattern-finder**: Find examples of existing patterns
|
|
60
|
+
- **git-history-analyzer**: Understand file change history
|
|
61
|
+
|
|
62
|
+
**For e2e test research:**
|
|
63
|
+
- Find existing e2e tests in `e2e/` or `tests/` directories
|
|
64
|
+
- Document what scenarios each test covers
|
|
65
|
+
- Identify tests needing modification or gaps for new functionality
|
|
66
|
+
|
|
67
|
+
**For web research:**
|
|
68
|
+
- **web-search-researcher**: External documentation and resources
|
|
69
|
+
- Include LINKS with findings in the final report
|
|
70
|
+
|
|
71
|
+
Run multiple agents in parallel when searching for different things.
|
|
72
|
+
|
|
73
|
+
## Step 4: Wait and Synthesize
|
|
74
|
+
|
|
75
|
+
**CRITICAL**: Wait for ALL sub-agent tasks to complete before proceeding.
|
|
76
|
+
|
|
77
|
+
- Compile all sub-agent results
|
|
78
|
+
- Prioritize live codebase findings as primary source of truth
|
|
79
|
+
- Connect findings across different components
|
|
80
|
+
- Include specific file paths and line numbers
|
|
81
|
+
- Note any frameworks used (Rails, NestJS, Expo, React, etc.)
|
|
82
|
+
|
|
83
|
+
## Step 5: Generate Document
|
|
84
|
+
|
|
85
|
+
Create `$ARGUMENTS/research.md` with this structure:
|
|
86
|
+
|
|
87
|
+
```markdown
|
|
88
|
+
---
|
|
89
|
+
date: [ISO format with timezone]
|
|
90
|
+
status: complete
|
|
91
|
+
last_updated: [YYYY-MM-DD]
|
|
92
|
+
---
|
|
93
|
+
|
|
94
|
+
# Research
|
|
95
|
+
|
|
96
|
+
## Summary
|
|
97
|
+
[High-level documentation of findings]
|
|
98
|
+
|
|
99
|
+
## Detailed Findings
|
|
100
|
+
### [Component/Area]
|
|
101
|
+
- Description of what exists ([file.ext:line](link))
|
|
102
|
+
- How it connects to other components
|
|
103
|
+
|
|
104
|
+
## Code References
|
|
105
|
+
- `path/to/file.py:123` - Description
|
|
106
|
+
|
|
107
|
+
## Reusable Code
|
|
108
|
+
### Existing Functions/Modules
|
|
109
|
+
- `path/to/utils.ts:45` - `functionName()` - description of what it does and how it can be reused
|
|
110
|
+
- `path/to/service.ts:120` - `ClassName` - description of reusable functionality
|
|
111
|
+
|
|
112
|
+
### Existing Patterns to Follow
|
|
113
|
+
- Similar feature implemented in `path/to/feature/` - follow same structure
|
|
114
|
+
- Existing implementation of X in `path/to/file.ts` - can be extended/adapted
|
|
115
|
+
|
|
116
|
+
## Architecture Documentation
|
|
117
|
+
[Patterns, conventions, design implementations]
|
|
118
|
+
|
|
119
|
+
## Testing Patterns
|
|
120
|
+
### Unit Test Patterns
|
|
121
|
+
- **Location**: pattern found
|
|
122
|
+
- **Framework**: Jest/Vitest/etc.
|
|
123
|
+
- **Example to follow**: path:line-range
|
|
124
|
+
- **Conventions**: naming, structure, mocks
|
|
125
|
+
|
|
126
|
+
### Integration Test Patterns
|
|
127
|
+
[Similar structure]
|
|
128
|
+
|
|
129
|
+
### E2E Test Patterns
|
|
130
|
+
[Similar structure]
|
|
131
|
+
|
|
132
|
+
## Impacted Tests
|
|
133
|
+
### Tests Requiring Modification
|
|
134
|
+
- `tests/example.spec.ts` - tests X functionality, will need updates for Y
|
|
135
|
+
- `e2e/feature.spec.ts` - may need new assertions for Z
|
|
136
|
+
|
|
137
|
+
### Test Gaps
|
|
138
|
+
- No existing tests for X functionality - will need new test file
|
|
139
|
+
- Missing edge case coverage for Y scenario
|
|
140
|
+
|
|
141
|
+
## Documentation Patterns
|
|
142
|
+
### JSDoc Conventions
|
|
143
|
+
### Database Comments (Backend)
|
|
144
|
+
### GraphQL Descriptions (Backend)
|
|
145
|
+
|
|
146
|
+
## Open Questions
|
|
147
|
+
|
|
148
|
+
### Q1: [Short Title]
|
|
149
|
+
**Question**: [Full question]
|
|
150
|
+
**Context**: [Why this arose]
|
|
151
|
+
**Impact**: [What it affects]
|
|
152
|
+
**Recommendation**: [Researcher's best recommendation based on findings]
|
|
153
|
+
**Answer**: _[Human fills before /project-plan]_
|
|
154
|
+
```
|
|
155
|
+
|
|
156
|
+
## Step 6: Commit
|
|
157
|
+
|
|
158
|
+
Run `/git-commit`
|
|
159
|
+
|
|
160
|
+
## Important Notes
|
|
161
|
+
|
|
162
|
+
- Always use parallel Task agents to maximize efficiency
|
|
163
|
+
- Always run fresh codebase research - never rely solely on existing documents
|
|
164
|
+
- Focus on finding concrete file paths and line numbers
|
|
165
|
+
- Each sub-agent prompt should be specific and focused on read-only documentation
|
|
166
|
+
- **REMEMBER**: Document what IS, not what SHOULD BE
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: project-review
|
|
3
|
+
description: This skill should be used when performing extensive code review and optimization on the current project. It runs Claude local code review, CodeRabbit review, implements fixes from both, and performs code simplification optimizations.
|
|
4
|
+
allowed-tools: ["Read", "Write", "Edit", "Bash", "Glob", "Grep", "Task", "TaskCreate", "TaskUpdate", "TaskList", "Skill"]
|
|
5
|
+
argument-hint: "<project-directory>"
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
The current branch is a feature branch with full implementation of the project in $ARGUMENTS.
|
|
9
|
+
|
|
10
|
+
**IMPORTANT**: Perform each step and move to the next without stopping.
|
|
11
|
+
|
|
12
|
+
## Setup
|
|
13
|
+
|
|
14
|
+
Set active project marker: `echo "$ARGUMENTS" | sed 's|.*/||' > .claude-active-project`
|
|
15
|
+
|
|
16
|
+
Extract `<project-name>` from the last segment of `$ARGUMENTS`.
|
|
17
|
+
|
|
18
|
+
## Create and Execute Tasks
|
|
19
|
+
|
|
20
|
+
Create workflow tracking tasks with `metadata.project` set to the project name:
|
|
21
|
+
|
|
22
|
+
```
|
|
23
|
+
TaskCreate:
|
|
24
|
+
subject: "Perform Claude review"
|
|
25
|
+
description: "If $ARGUMENTS/claude-review.md already exists, skip this task. Otherwise, run /project-local-code-review $ARGUMENTS"
|
|
26
|
+
metadata: { project: "<project-name>" }
|
|
27
|
+
|
|
28
|
+
TaskCreate:
|
|
29
|
+
subject: "Implement Claude review fixes"
|
|
30
|
+
description: "Read $ARGUMENTS/claude-review.md and fix any suggestions that score above 45."
|
|
31
|
+
metadata: { project: "<project-name>" }
|
|
32
|
+
|
|
33
|
+
TaskCreate:
|
|
34
|
+
subject: "Perform CodeRabbit review"
|
|
35
|
+
description: "If $ARGUMENTS/coderabbit-review.md already exists, skip this task. Otherwise, run `/coderabbit:review` and write results to $ARGUMENTS/coderabbit-review.md"
|
|
36
|
+
metadata: { project: "<project-name>" }
|
|
37
|
+
|
|
38
|
+
TaskCreate:
|
|
39
|
+
subject: "Implement CodeRabbit review fixes"
|
|
40
|
+
description: "Evaluate suggestions in $ARGUMENTS/coderabbit-review.md and implement fixes for valid findings."
|
|
41
|
+
metadata: { project: "<project-name>" }
|
|
42
|
+
|
|
43
|
+
TaskCreate:
|
|
44
|
+
subject: "Perform Claude optimizations"
|
|
45
|
+
description: "Use the code simplifier agent to clean up code added to the current branch."
|
|
46
|
+
metadata: { project: "<project-name>" }
|
|
47
|
+
```
|
|
48
|
+
|
|
49
|
+
**Execute each task via a subagent** to preserve main context. Launch up to 6 in parallel where tasks don't have dependencies. Do not stop until all are completed.
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: project-setup
|
|
3
|
+
description: This skill should be used when initializing a new project with full requirements analysis, planning, and structure setup. It accepts a file path, JIRA issue, or text description, creates the project directory structure with brief.md and findings.md, and commits the initial setup.
|
|
4
|
+
allowed-tools: ["Read", "Write", "Bash(git*)", "Glob", "Grep", "Task", "TaskCreate", "TaskUpdate", "TaskList"]
|
|
5
|
+
argument-hint: "<file-path|jira-issue|text-description>"
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
## Step 1: Determine Input Type
|
|
9
|
+
|
|
10
|
+
Examine $ARGUMENTS to determine which type:
|
|
11
|
+
- **Jira issue**: Matches pattern like `SE-123`, `PROJ-456` (letters-dash-numbers)
|
|
12
|
+
- **File path**: Path exists as a file (check with Glob or Read)
|
|
13
|
+
- **Text prompt**: Everything else - a description of work to be done
|
|
14
|
+
|
|
15
|
+
## Step 2: Get Brief Content
|
|
16
|
+
|
|
17
|
+
Based on input type:
|
|
18
|
+
|
|
19
|
+
**If Jira issue:**
|
|
20
|
+
1. Use the atlassian MCP server to Read the issue FULLY
|
|
21
|
+
2. If MCP server not working, STOP and let human know
|
|
22
|
+
|
|
23
|
+
**If file path:**
|
|
24
|
+
1. Read the file FULLY (no limit/offset)
|
|
25
|
+
|
|
26
|
+
**If text prompt:**
|
|
27
|
+
1. The prompt IS the brief content - use $ARGUMENTS directly
|
|
28
|
+
|
|
29
|
+
## Step 3: Create Project Structure
|
|
30
|
+
|
|
31
|
+
1. Create project directory in `projects/` named `YYYY-MM-DD-<project-name>` where `<project-name>` is derived from:
|
|
32
|
+
- Jira: the issue key and title (e.g., `2026-01-26-se-123-add-auth`)
|
|
33
|
+
- File: the filename without extension
|
|
34
|
+
- Text prompt: a kebab-case summary of the prompt (e.g., `2026-01-26-add-user-authentication`)
|
|
35
|
+
|
|
36
|
+
2. Create `brief.md` in the project directory:
|
|
37
|
+
- Jira: populate with issue number, title, and description
|
|
38
|
+
- File: copy contents of the file to `brief.md`
|
|
39
|
+
- Text prompt: create `brief.md` with the prompt text as content
|
|
40
|
+
|
|
41
|
+
3. Create empty `findings.md` in the project directory
|
|
42
|
+
|
|
43
|
+
4. Create `.claude-active-project` marker file:
|
|
44
|
+
```bash
|
|
45
|
+
echo "YYYY-MM-DD-<project-name>" > .claude-active-project
|
|
46
|
+
```
|
|
47
|
+
|
|
48
|
+
## Step 4: Git and Finalize
|
|
49
|
+
|
|
50
|
+
1. If Jira issue:
|
|
51
|
+
- Run /git-commit with branch name including issue number (e.g., `feature/SE-111-<branch-name>`)
|
|
52
|
+
- Use atlassian MCP server to update issue status to "In Progress"
|
|
53
|
+
2. Otherwise:
|
|
54
|
+
- Run /git-commit
|
|
55
|
+
|
|
56
|
+
3. Output: "Project created: `YYYY-MM-DD-<project-name>`"
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: project-verify
|
|
3
|
+
description: This skill should be used when performing comprehensive verification that a feature branch fully implements all project requirements with proper code quality, tests, and documentation. It reviews requirements, verifies implementation, runs task verification commands, and documents any drift.
|
|
4
|
+
allowed-tools: ["Read", "Write", "Edit", "Bash", "Glob", "Grep", "Task", "TaskCreate", "TaskUpdate", "TaskList"]
|
|
5
|
+
argument-hint: "<project-directory>"
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
The current branch is a feature branch with full implementation of the project in $ARGUMENTS.
|
|
9
|
+
|
|
10
|
+
## Setup
|
|
11
|
+
|
|
12
|
+
Set active project marker: `echo "$ARGUMENTS" | sed 's|.*/||' > .claude-active-project`
|
|
13
|
+
|
|
14
|
+
Extract `<project-name>` from the last segment of `$ARGUMENTS`.
|
|
15
|
+
|
|
16
|
+
## Create and Execute Tasks
|
|
17
|
+
|
|
18
|
+
Create workflow tracking tasks with `metadata.project` set to the project name:
|
|
19
|
+
|
|
20
|
+
```
|
|
21
|
+
TaskCreate:
|
|
22
|
+
subject: "Review requirements"
|
|
23
|
+
description: "Read all requirements for $ARGUMENTS (brief.md, research.md, task files)."
|
|
24
|
+
metadata: { project: "<project-name>" }
|
|
25
|
+
|
|
26
|
+
TaskCreate:
|
|
27
|
+
subject: "Verify implementation"
|
|
28
|
+
description: "Verify the implementation completely and fully satisfies all requirements from the brief and research."
|
|
29
|
+
metadata: { project: "<project-name>" }
|
|
30
|
+
|
|
31
|
+
TaskCreate:
|
|
32
|
+
subject: "Run task verification commands"
|
|
33
|
+
description: "Read all task files in $ARGUMENTS/tasks/. For each task with verification metadata (JSON: metadata.verification, or Markdown: ## Verification section), create a verification task with subject 'Verify: <original-subject>' and metadata including originalTaskId and verification details. Then execute each verification task: run the command, compare output to expected. If pass, mark completed. If fail, keep in_progress and document failure in $ARGUMENTS/drift.md. Report summary: total tasks, passed, failed, blocked."
|
|
34
|
+
metadata: { project: "<project-name>" }
|
|
35
|
+
|
|
36
|
+
TaskCreate:
|
|
37
|
+
subject: "Document drift"
|
|
38
|
+
description: "If there is any divergence from requirements or verification failures, ensure all drift is documented in $ARGUMENTS/drift.md."
|
|
39
|
+
metadata: { project: "<project-name>" }
|
|
40
|
+
```
|
|
41
|
+
|
|
42
|
+
**Execute each task via a subagent** to preserve main context. Launch up to 6 in parallel where tasks don't have dependencies. Do not stop until all are completed.
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: pull-request-review
|
|
3
|
+
description: This skill should be used when checking for code review comments on a pull request and implementing them if required. It fetches PR metadata and comments, generates a brief from unresolved feedback, and bootstraps a project to address the review comments.
|
|
4
|
+
allowed-tools: ["Read", "Bash", "Glob", "Grep"]
|
|
5
|
+
argument-hint: "<github-pr-link>"
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
# Review PR Comments
|
|
9
|
+
|
|
10
|
+
Target PR: $ARGUMENTS
|
|
11
|
+
|
|
12
|
+
If no argument provided, prompt the user for a PR link or number.
|
|
13
|
+
|
|
14
|
+
## Step 1: Gather Requirements
|
|
15
|
+
|
|
16
|
+
1. **Fetch PR metadata and comments** using the GitHub CLI:
|
|
17
|
+
```bash
|
|
18
|
+
gh pr view $ARGUMENTS --json number,title,body,reviews,comments
|
|
19
|
+
gh api repos/{owner}/{repo}/pulls/{pr_number}/comments
|
|
20
|
+
```
|
|
21
|
+
2. **Extract each unresolved review comment**:
|
|
22
|
+
- Comment ID
|
|
23
|
+
- File path
|
|
24
|
+
- Line number
|
|
25
|
+
- Comment body
|
|
26
|
+
- Author
|
|
27
|
+
|
|
28
|
+
If no unresolved comments exist, report success and exit.
|
|
29
|
+
|
|
30
|
+
## Step 2: Generate Brief
|
|
31
|
+
|
|
32
|
+
Compile findings into a detailed brief:
|
|
33
|
+
|
|
34
|
+
```markdown
|
|
35
|
+
Implement PR review feedback for $ARGUMENTS.
|
|
36
|
+
|
|
37
|
+
## PR Overview
|
|
38
|
+
- Title: [PR title]
|
|
39
|
+
- Description: [PR description summary]
|
|
40
|
+
|
|
41
|
+
## Review Comments to Address (ordered by file)
|
|
42
|
+
|
|
43
|
+
### 1. [file_path]:[line_number] (Comment ID: [id])
|
|
44
|
+
**Reviewer**: [author]
|
|
45
|
+
**Comment**: [full comment body]
|
|
46
|
+
**Action Required**: [brief description of what needs to change]
|
|
47
|
+
|
|
48
|
+
### 2. [file_path]:[line_number] (Comment ID: [id])
|
|
49
|
+
**Reviewer**: [author]
|
|
50
|
+
**Comment**: [full comment body]
|
|
51
|
+
**Action Required**: [brief description of what needs to change]
|
|
52
|
+
|
|
53
|
+
...
|
|
54
|
+
|
|
55
|
+
## Implementation Guidelines
|
|
56
|
+
- Evaluate each comment for validity before implementing
|
|
57
|
+
- If a comment is not valid, document the reasoning
|
|
58
|
+
- Ensure changes follow project coding standards
|
|
59
|
+
- Run relevant tests to verify changes work
|
|
60
|
+
|
|
61
|
+
## Acceptance Criteria
|
|
62
|
+
- All valid review comments addressed
|
|
63
|
+
- Tests pass after changes
|
|
64
|
+
- `bun run lint` passes
|
|
65
|
+
|
|
66
|
+
## Verification
|
|
67
|
+
Command: `bun run lint && bun run test`
|
|
68
|
+
Expected: All checks pass
|
|
69
|
+
```
|
|
70
|
+
|
|
71
|
+
## Step 3: Bootstrap Project
|
|
72
|
+
|
|
73
|
+
Run `/project-bootstrap` with the generated brief as a text prompt.
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: sonarqube-check
|
|
3
|
+
description: This skill should be used when checking why the last pull request failed SonarQube/SonarCloud quality gates. It uses the SonarQube MCP server to retrieve failure details and report the reasons.
|
|
4
|
+
allowed-tools: ["mcp__sonarqube__*"]
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# SonarQube Check
|
|
8
|
+
|
|
9
|
+
Use the SonarQube MCP server to get the reason the last PR failed checks.
|
|
10
|
+
|
|
11
|
+
Retrieve the quality gate status and report all failures with their details.
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: sonarqube-fix
|
|
3
|
+
description: This skill should be used when fixing SonarQube quality gate failures. It runs the sonarqube-check skill to identify failures, fixes the identified issues, and then commits the changes using the git-commit skill.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
1. Run /sonarqube-check
|
|
7
|
+
2. Fix the SonarQube quality gate failures identified in step 1
|
|
8
|
+
3. Run /git-commit
|
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: tasks-load
|
|
3
|
+
description: This skill should be used when loading tasks from a project directory into the current Claude Code session. It reads task JSON files from session subdirectories, recreates them in the current session, and sets the active project marker.
|
|
4
|
+
allowed-tools: ["Read", "Bash", "TaskCreate", "TaskUpdate", "TaskList"]
|
|
5
|
+
argument-hint: "<project-name>"
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
# Load Project Tasks
|
|
9
|
+
|
|
10
|
+
Load tasks from `projects/$ARGUMENTS/tasks/` into the current Claude Code session.
|
|
11
|
+
|
|
12
|
+
Tasks are stored in session subdirectories to preserve history across `/clear` commands:
|
|
13
|
+
```
|
|
14
|
+
projects/$ARGUMENTS/tasks/
|
|
15
|
+
├── {session-1-uuid}/
|
|
16
|
+
│ ├── 1.json
|
|
17
|
+
│ └── 2.json
|
|
18
|
+
└── {session-2-uuid}/
|
|
19
|
+
├── 1.json
|
|
20
|
+
└── 2.json
|
|
21
|
+
```
|
|
22
|
+
|
|
23
|
+
## Process
|
|
24
|
+
|
|
25
|
+
### Step 1: Validate Project
|
|
26
|
+
|
|
27
|
+
Check if the project exists and has task files:
|
|
28
|
+
|
|
29
|
+
```bash
|
|
30
|
+
find projects/$ARGUMENTS/tasks -name "*.json" 2>/dev/null | head -5
|
|
31
|
+
```
|
|
32
|
+
|
|
33
|
+
If no task files exist, report: "No tasks found in projects/$ARGUMENTS/tasks/"
|
|
34
|
+
|
|
35
|
+
List available sessions:
|
|
36
|
+
|
|
37
|
+
```bash
|
|
38
|
+
ls -dt projects/$ARGUMENTS/tasks/*/ 2>/dev/null | head -10
|
|
39
|
+
```
|
|
40
|
+
|
|
41
|
+
### Step 2: Set Active Project
|
|
42
|
+
|
|
43
|
+
Create the active project marker:
|
|
44
|
+
|
|
45
|
+
```bash
|
|
46
|
+
echo "$ARGUMENTS" > .claude-active-project
|
|
47
|
+
```
|
|
48
|
+
|
|
49
|
+
This ensures any new tasks created will sync back to this project.
|
|
50
|
+
|
|
51
|
+
### Step 3: Load Tasks
|
|
52
|
+
|
|
53
|
+
Find and load all task JSON files from ALL session directories:
|
|
54
|
+
|
|
55
|
+
```bash
|
|
56
|
+
find projects/$ARGUMENTS/tasks -name "*.json" -type f
|
|
57
|
+
```
|
|
58
|
+
|
|
59
|
+
For each JSON file found:
|
|
60
|
+
|
|
61
|
+
1. Read the task JSON file
|
|
62
|
+
2. Use TaskCreate to recreate the task with:
|
|
63
|
+
- subject from JSON
|
|
64
|
+
- description from JSON
|
|
65
|
+
- activeForm from JSON
|
|
66
|
+
- metadata: `{ "project": "$ARGUMENTS" }`
|
|
67
|
+
3. If the task was already completed (status: "completed"), use TaskUpdate to mark it completed
|
|
68
|
+
|
|
69
|
+
### Step 4: Report
|
|
70
|
+
|
|
71
|
+
After loading all tasks, report:
|
|
72
|
+
|
|
73
|
+
```
|
|
74
|
+
Loaded X tasks from projects/$ARGUMENTS/tasks/
|
|
75
|
+
- Sessions found: N
|
|
76
|
+
- Pending: Y
|
|
77
|
+
- Completed: Z
|
|
78
|
+
|
|
79
|
+
Active project set to: $ARGUMENTS
|
|
80
|
+
New tasks will automatically sync to this project.
|
|
81
|
+
```
|
|
82
|
+
|
|
83
|
+
## Notes
|
|
84
|
+
|
|
85
|
+
- Tasks are recreated with new IDs in the current session
|
|
86
|
+
- The original task IDs from the project are not preserved
|
|
87
|
+
- Tasks from ALL sessions are loaded (full history)
|
|
88
|
+
- Task dependencies (blocks/blockedBy) are NOT currently preserved across load/sync cycles
|
|
89
|
+
- Use TaskList to see the loaded tasks
|
|
@@ -0,0 +1,109 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: tasks-sync
|
|
3
|
+
description: This skill should be used when syncing current session tasks to a project directory. It exports all tasks from the current Claude Code session to JSON files in the project's tasks directory, enabling persistence across sessions.
|
|
4
|
+
allowed-tools: ["Read", "Write", "Bash", "TaskList", "TaskGet"]
|
|
5
|
+
argument-hint: "<project-name>"
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
# Sync Tasks to Project
|
|
9
|
+
|
|
10
|
+
Sync all tasks from the current session to `projects/$ARGUMENTS/tasks/{session-id}/`.
|
|
11
|
+
|
|
12
|
+
This skill is for manual syncing when work started without setting an active project. Once synced, the automatic hook handles future task updates.
|
|
13
|
+
|
|
14
|
+
## Process
|
|
15
|
+
|
|
16
|
+
### Step 1: Validate Project
|
|
17
|
+
|
|
18
|
+
Check if the project directory exists:
|
|
19
|
+
|
|
20
|
+
```bash
|
|
21
|
+
ls -d projects/$ARGUMENTS 2>/dev/null
|
|
22
|
+
```
|
|
23
|
+
|
|
24
|
+
If the project doesn't exist, ask: "Project '$ARGUMENTS' doesn't exist. Create it?"
|
|
25
|
+
|
|
26
|
+
If yes, create the project structure:
|
|
27
|
+
|
|
28
|
+
```bash
|
|
29
|
+
mkdir -p projects/$ARGUMENTS/tasks
|
|
30
|
+
```
|
|
31
|
+
|
|
32
|
+
### Step 2: Determine Session ID
|
|
33
|
+
|
|
34
|
+
Find the current session by looking for the most recently modified task directory:
|
|
35
|
+
|
|
36
|
+
```bash
|
|
37
|
+
ls -dt ~/.claude/tasks/*/ 2>/dev/null | head -1 | xargs basename
|
|
38
|
+
```
|
|
39
|
+
|
|
40
|
+
If no session found, use a timestamp-based identifier:
|
|
41
|
+
|
|
42
|
+
```bash
|
|
43
|
+
echo "manual-$(date +%Y%m%d-%H%M%S)"
|
|
44
|
+
```
|
|
45
|
+
|
|
46
|
+
Store the session ID for use in subsequent steps.
|
|
47
|
+
|
|
48
|
+
### Step 3: Set Active Project
|
|
49
|
+
|
|
50
|
+
Create/update the active project marker:
|
|
51
|
+
|
|
52
|
+
```bash
|
|
53
|
+
echo "$ARGUMENTS" > .claude-active-project
|
|
54
|
+
```
|
|
55
|
+
|
|
56
|
+
### Step 4: Get Current Tasks
|
|
57
|
+
|
|
58
|
+
Use TaskList to get all tasks in the current session.
|
|
59
|
+
|
|
60
|
+
### Step 5: Sync Each Task
|
|
61
|
+
|
|
62
|
+
For each task from TaskList:
|
|
63
|
+
|
|
64
|
+
1. Use TaskGet to get full task details
|
|
65
|
+
2. Create the session directory:
|
|
66
|
+
|
|
67
|
+
```bash
|
|
68
|
+
mkdir -p projects/$ARGUMENTS/tasks/{session-id}
|
|
69
|
+
```
|
|
70
|
+
|
|
71
|
+
3. Create a JSON file with the task data:
|
|
72
|
+
|
|
73
|
+
```json
|
|
74
|
+
{
|
|
75
|
+
"id": "<task-id>",
|
|
76
|
+
"subject": "<subject>",
|
|
77
|
+
"description": "<description>",
|
|
78
|
+
"activeForm": "<activeForm>",
|
|
79
|
+
"status": "<status>",
|
|
80
|
+
"blocks": [],
|
|
81
|
+
"blockedBy": []
|
|
82
|
+
}
|
|
83
|
+
```
|
|
84
|
+
|
|
85
|
+
4. Write to `projects/$ARGUMENTS/tasks/{session-id}/<id>.json`
|
|
86
|
+
|
|
87
|
+
### Step 6: Stage for Git
|
|
88
|
+
|
|
89
|
+
```bash
|
|
90
|
+
git add projects/$ARGUMENTS/tasks/{session-id}/*.json
|
|
91
|
+
```
|
|
92
|
+
|
|
93
|
+
### Step 7: Report
|
|
94
|
+
|
|
95
|
+
```
|
|
96
|
+
Synced X tasks to projects/$ARGUMENTS/tasks/{session-id}/
|
|
97
|
+
- Pending: Y
|
|
98
|
+
- In Progress: Z
|
|
99
|
+
- Completed: W
|
|
100
|
+
|
|
101
|
+
Files staged for commit. Run /git-commit when ready.
|
|
102
|
+
```
|
|
103
|
+
|
|
104
|
+
## Notes
|
|
105
|
+
|
|
106
|
+
- This skill manually syncs all current tasks to a project
|
|
107
|
+
- Use this when work started without a project context
|
|
108
|
+
- After syncing, the active project is set so future tasks auto-sync via the hook
|
|
109
|
+
- Each sync creates a new session directory to preserve history
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* This file is managed by Lisa.
|
|
3
|
+
* Do not edit directly — changes will be overwritten on the next `lisa` run.
|
|
4
|
+
*/
|
|
5
|
+
|
|
6
|
+
/**
|
|
7
|
+
* Jest Configuration - CDK Stack
|
|
8
|
+
*
|
|
9
|
+
* Provides AWS CDK-specific Jest configuration targeting
|
|
10
|
+
* the test/ directory with spec and integration-spec patterns.
|
|
11
|
+
*
|
|
12
|
+
* Inheritance chain:
|
|
13
|
+
* jest.cdk.ts (this file)
|
|
14
|
+
* └── jest.base.ts
|
|
15
|
+
*
|
|
16
|
+
* @see https://jestjs.io/docs/configuration
|
|
17
|
+
* @module jest.cdk
|
|
18
|
+
*/
|
|
19
|
+
import type { Config } from "jest";
|
|
20
|
+
|
|
21
|
+
import {
|
|
22
|
+
defaultCoverageExclusions,
|
|
23
|
+
defaultThresholds,
|
|
24
|
+
mergeConfigs,
|
|
25
|
+
mergeThresholds,
|
|
26
|
+
} from "./jest.base.ts";
|
|
27
|
+
|
|
28
|
+
// Re-export base utilities for entry-point configs
|
|
29
|
+
export {
|
|
30
|
+
defaultCoverageExclusions,
|
|
31
|
+
defaultThresholds,
|
|
32
|
+
mergeConfigs,
|
|
33
|
+
mergeThresholds,
|
|
34
|
+
};
|
|
35
|
+
|
|
36
|
+
/**
|
|
37
|
+
* Options for configuring the CDK Jest config factory.
|
|
38
|
+
*/
|
|
39
|
+
interface CdkJestOptions {
|
|
40
|
+
/** Coverage thresholds (merged defaults + project overrides) */
|
|
41
|
+
readonly thresholds?: Config["coverageThreshold"];
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
/**
|
|
45
|
+
* Creates a Jest configuration for AWS CDK projects.
|
|
46
|
+
*
|
|
47
|
+
* @param options - Configuration options for threshold overrides
|
|
48
|
+
* @param options.thresholds - Coverage thresholds (merged defaults + project overrides)
|
|
49
|
+
* @returns Jest config object with ts-jest transform, node environment, and CDK-specific paths
|
|
50
|
+
* @remarks CDK projects typically use CommonJS modules and keep tests in a
|
|
51
|
+
* separate test/ directory. Coverage is collected only from lib/ and util/
|
|
52
|
+
* directories since bin/ contains entry-point code with minimal logic.
|
|
53
|
+
*/
|
|
54
|
+
export const getCdkJestConfig = ({
|
|
55
|
+
thresholds = defaultThresholds,
|
|
56
|
+
}: CdkJestOptions = {}): Config => ({
|
|
57
|
+
testEnvironment: "node",
|
|
58
|
+
roots: ["<rootDir>/test"],
|
|
59
|
+
testRegex: "(.*\\.(spec|integration-spec)\\.ts)$",
|
|
60
|
+
transform: {
|
|
61
|
+
"^.+\\.ts$": "ts-jest",
|
|
62
|
+
},
|
|
63
|
+
moduleFileExtensions: ["js", "json", "ts"],
|
|
64
|
+
collectCoverageFrom: [
|
|
65
|
+
"lib/**/*.ts",
|
|
66
|
+
"util/**/*.ts",
|
|
67
|
+
...defaultCoverageExclusions,
|
|
68
|
+
],
|
|
69
|
+
coverageThreshold: thresholds,
|
|
70
|
+
testTimeout: 10000,
|
|
71
|
+
});
|