@codyswann/lisa 1.66.2 → 1.67.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/rules/base-rules.md +137 -0
- package/package.json +1 -1
- package/plugins/lisa/.claude-plugin/plugin.json +1 -10
- package/plugins/lisa-cdk/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-expo/.claude-plugin/plugin.json +2 -14
- package/plugins/lisa-nestjs/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-rails/.claude-plugin/plugin.json +1 -12
- package/plugins/lisa-typescript/.claude-plugin/plugin.json +1 -12
- package/plugins/src/base/.claude-plugin/plugin.json +0 -9
- package/plugins/src/expo/.claude-plugin/plugin.json +2 -13
- package/plugins/src/rails/.claude-plugin/plugin.json +0 -11
- package/plugins/src/typescript/.claude-plugin/plugin.json +0 -11
- package/typescript/copy-contents/.husky/commit-msg +6 -0
- package/plugins/lisa/rules/README.md +0 -240
- package/plugins/lisa-rails/rules/lisa.md +0 -42
- package/plugins/lisa-typescript/rules/lisa.md +0 -37
- package/plugins/src/base/rules/README.md +0 -240
- package/plugins/src/base/rules/coding-philosophy.md +0 -428
- package/plugins/src/base/rules/verfication.md +0 -594
- package/plugins/src/expo/rules/expo-verification.md +0 -261
- package/plugins/src/rails/rules/lisa.md +0 -42
- package/plugins/src/rails/rules/rails-conventions.md +0 -176
- package/plugins/src/typescript/rules/lisa.md +0 -37
- /package/{plugins/lisa → all/copy-overwrite/.claude}/rules/coding-philosophy.md +0 -0
- /package/{plugins/lisa/rules/verfication.md → all/copy-overwrite/.claude/rules/verification.md} +0 -0
- /package/{plugins/lisa-expo → expo/copy-overwrite/.claude}/rules/expo-verification.md +0 -0
- /package/{plugins/lisa-rails → rails/copy-overwrite/.claude}/rules/rails-conventions.md +0 -0
|
@@ -0,0 +1,137 @@
|
|
|
1
|
+
Requirement Verification:
|
|
2
|
+
|
|
3
|
+
Never assume the person providing instructions has given you complete, correct, or technically precise requirements. Treat every request as potentially underspecified. Before starting any work:
|
|
4
|
+
|
|
5
|
+
1. Verify the request is specific enough to produce a verifiable outcome. If it is not, stop and ask for clarification.
|
|
6
|
+
2. Verify you can empirically prove the work is done when complete (e.g. a passing test, a working API call, observable behavior in a browser, a log entry). If you cannot define how to prove it, stop and ask for clarification.
|
|
7
|
+
3. If a request contradicts existing code, architecture, or conventions, do not silently comply. Raise the contradiction and confirm intent before proceeding.
|
|
8
|
+
|
|
9
|
+
DO NOT START WORK if any of the above are unclear. Asking a clarifying question is always cheaper than implementing the wrong thing.
|
|
10
|
+
|
|
11
|
+
Project Discovery:
|
|
12
|
+
- Determine the project's package manager before installing or running anything.
|
|
13
|
+
- Read the project manifest (e.g. package.json, pyproject.toml, Cargo.toml, go.mod) to understand available scripts and dependencies.
|
|
14
|
+
- Read the project's linting and formatting configuration to understand its standards.
|
|
15
|
+
- Regenerate the lockfile after adding, removing, or updating dependencies.
|
|
16
|
+
- Ignore build output directories (dist, build, out, target, etc.) unless specified otherwise.
|
|
17
|
+
- Ignore configuration linter hints/warnings — only fix actual unused exports/dependencies reported as errors.
|
|
18
|
+
|
|
19
|
+
Code Quality:
|
|
20
|
+
- Make atomic commits with clear conventional commit messages.
|
|
21
|
+
- Create clear documentation preambles for new code. Update preambles when modifying existing code.
|
|
22
|
+
- Document the "why", not the "what". Code explains what it does; documentation explains why it exists.
|
|
23
|
+
- Add language specifiers to fenced code blocks in Markdown.
|
|
24
|
+
- Use project-relative paths rather than absolute paths in documentation and Markdown.
|
|
25
|
+
- Delete old code completely when replacing it. No deprecation unless specifically requested.
|
|
26
|
+
- Fix bugs and issues properly. Never cover them up or work around them.
|
|
27
|
+
- Test empirically to confirm something worked. Never assume.
|
|
28
|
+
- Never assume test expectations before verifying actual implementation behavior. Run tests to learn the behavior, then adjust expectations to match.
|
|
29
|
+
- Always provide a solution. Never dismiss something as "not related to our changes" or "not relevant to this task".
|
|
30
|
+
|
|
31
|
+
Git Discipline:
|
|
32
|
+
- Prefix git push with `GIT_SSH_COMMAND="ssh -o ServerAliveInterval=30 -o ServerAliveCountMax=5"`.
|
|
33
|
+
- Never commit directly to an environment branch (dev, staging, main).
|
|
34
|
+
- Never use --no-verify or attempt to bypass a git hook.
|
|
35
|
+
- Never stash changes you cannot commit. Either fix whatever is preventing the commit or fail out and let the human know why.
|
|
36
|
+
- Never add "BREAKING CHANGE" to a commit message unless there is actually a breaking change.
|
|
37
|
+
- When opening a PR, watch the PR. If any status checks fail, fix them. For all bot code reviews, if the feedback is valid, implement it and push the change to the PR. Then resolve the feedback. If the feedback is not valid, reply to the feedback explaining why it's not valid and then resolve the feedback. Do this in a loop until the PR is able to be merged and then merge it.
|
|
38
|
+
- When merging a PR into an environment branch (dev, staging, main), watch the resultant deploy until it fully succeeds. If it fails for any reason, fix the failure and then open a new PR with the fix.
|
|
39
|
+
- When referencing a PR in a response, always include the url
|
|
40
|
+
|
|
41
|
+
Testing Discipline:
|
|
42
|
+
- Never skip or disable any tests or quality checks.
|
|
43
|
+
- Never add skip directives to a test unless explicitly asked to.
|
|
44
|
+
- Never lower thresholds to pass a pre-push hook. Increase test coverage to make it pass.
|
|
45
|
+
- Never duplicate test helper functions without appropriate lint suppression when duplication is intentional for test isolation.
|
|
46
|
+
|
|
47
|
+
JIRA Discipline:
|
|
48
|
+
- If working on a JIRA issue, make sure the branch you're working on references and is added to the JIRA issue.
|
|
49
|
+
- If working on a JIRA issue, update the issue as you work through it. For example, if working on a Bug Triage, update the issue with your questions/feedback/suggestions.
|
|
50
|
+
|
|
51
|
+
Agent Behavior:
|
|
52
|
+
- Never handle tasks yourself when working in a team of agents. Always delegate to a specialized agent.
|
|
53
|
+
|
|
54
|
+
NEVER:
|
|
55
|
+
- Modify this file directly. To add a memory or learning, use the project's rules file or create a skill.
|
|
56
|
+
- Directly modify files inside dependency directories (e.g. node_modules, .venv, vendor, target).
|
|
57
|
+
- Delete anything that is not tracked in git.
|
|
58
|
+
- Delete anything outside of this project's directory.
|
|
59
|
+
- Create placeholder implementations.
|
|
60
|
+
- Create TODOs.
|
|
61
|
+
- Create versioned copies of files or functions (e.g. V2, Optimized, processNew, handleOld).
|
|
62
|
+
- Write migration code unless explicitly requested.
|
|
63
|
+
- Write functions or methods unless they are needed.
|
|
64
|
+
- Write unhelpful comments like "removed code" or "old implementation".
|
|
65
|
+
- Update CHANGELOG.
|
|
66
|
+
|
|
67
|
+
ASK FIRST:
|
|
68
|
+
- Before adding a lint suppression comment (e.g. eslint-disable, noqa, #[allow(...)], @SuppressWarnings). These should be a last resort.
|
|
69
|
+
- Before adding a type-checking suppression comment (e.g. ts-ignore, ts-expect-error, ts-nocheck, type: ignore).
|
|
70
|
+
- Lint suppression in test files is acceptable without asking only when comprehensive test coverage requires it (e.g. file length limits) or when intentional duplication improves test isolation. Include matching re-enable comments where applicable.
|
|
71
|
+
|
|
72
|
+
Bug Triage:
|
|
73
|
+
|
|
74
|
+
1. Verify you have all information needed to reproduce the bug (authentication requirements, environment information, etc.). Do not make assumptions. If anything is missing, stop and ask before proceeding.
|
|
75
|
+
2. Reproduce the bug. If you cannot reproduce it, stop and report what you tried and what you observed.
|
|
76
|
+
3. Once reproduced, verify you are 100% positive on how to fix it. If not, determine what you need to do to be 100% positive (e.g. add logging, trace the code path, inspect state) and do that first.
|
|
77
|
+
4. Verify you have access to the tools, environments, and permissions needed to deploy and verify this fix (e.g. CI/CD pipelines, deployment targets, logging/monitoring systems, API access, database access). If any are missing or inaccessible, stop and raise them before starting implementation.
|
|
78
|
+
5. Define the tests you will write to confirm the fix and prevent a regression.
|
|
79
|
+
6. Define the documentation you will create or update to explain this bug so another developer understands the "how" and "what" behind it.
|
|
80
|
+
7. If you can verify your fix before deploying to the target environment (e.g. start the app, invoke the API, open a browser, run the process, check logs), do so before deploying.
|
|
81
|
+
8. Define how you will verify the fix beyond a shadow of a doubt (e.g. deploy to the target environment, invoke the API, open a browser, run the process, check logs).
|
|
82
|
+
|
|
83
|
+
Bug Implementation:
|
|
84
|
+
|
|
85
|
+
1. Use the output of Bug Triage as your guide. Do not skip triage.
|
|
86
|
+
|
|
87
|
+
Task Triage:
|
|
88
|
+
|
|
89
|
+
1. Verify you have all information needed to implement this task (acceptance criteria, design specs, environment information, dependencies, etc.). Do not make assumptions. If anything is missing, stop and ask before proceeding.
|
|
90
|
+
2. Verify you have a clear understanding of the expected behavior or outcome when the task is complete. If not, stop and clarify before starting.
|
|
91
|
+
3. Identify all dependencies (other tasks, services, APIs, data) that must be in place before you can complete this task. If any are unresolved, stop and raise them before starting implementation.
|
|
92
|
+
4. Verify you have access to the tools, environments, and permissions needed to deploy and verify this task (e.g. CI/CD pipelines, deployment targets, logging/monitoring systems, API access, database access). If any are missing or inaccessible, stop and raise them before starting implementation.
|
|
93
|
+
5. Define the tests you will write to confirm the task is implemented correctly and prevent regressions.
|
|
94
|
+
6. Define the documentation you will create or update to explain the "how" and "what" behind this task so another developer understands it.
|
|
95
|
+
7. If you can verify your implementation before deploying to the target environment (e.g. start the app, invoke the API, open a browser, run the process, check logs), do so before deploying.
|
|
96
|
+
8. Define how you will verify the task is complete beyond a shadow of a doubt (e.g. deploy to the target environment, invoke the API, open a browser, run the process, check logs).
|
|
97
|
+
|
|
98
|
+
Task Implementation:
|
|
99
|
+
|
|
100
|
+
1. Use the output of Task Triage as your guide. Do not skip triage.
|
|
101
|
+
|
|
102
|
+
Epic Triage:
|
|
103
|
+
|
|
104
|
+
1. Verify you have all information needed to understand the full scope of this epic (goals, acceptance criteria, impacted systems, design specs, dependencies, etc.). Do not make assumptions. If anything is missing, stop and ask before proceeding.
|
|
105
|
+
2. Verify the epic is broken down into concrete, well-scoped bugs, tasks, and/or stories that are each fully triaged. If ambiguities exist, stop and resolve them before breaking it down.
|
|
106
|
+
3. Identify all cross-cutting concerns (auth, performance, security, data migrations, third-party integrations) that need to be addressed across the epic.
|
|
107
|
+
4. Identify all dependencies between tasks within the epic, or on external epics, teams, or services. Determine the correct order of execution.
|
|
108
|
+
5. Verify you have access to the tools, environments, and permissions needed to deploy and verify all tasks within this epic (e.g. CI/CD pipelines, deployment targets, logging/monitoring systems, API access, database access). If any are missing or inaccessible, stop and raise them before proceeding.
|
|
109
|
+
6. Define the overall test strategy for the epic (unit, integration, end-to-end, load testing).
|
|
110
|
+
7. Define the documentation that will need to be created or updated to cover the full scope of the epic so another developer understands the architecture, design decisions, and implementation.
|
|
111
|
+
8. Define measurable acceptance criteria that confirm the epic is fully complete.
|
|
112
|
+
9. Define how you will verify the epic is fully delivered beyond a shadow of a doubt (e.g. deploy to the target environment, walk through all acceptance criteria end-to-end, confirm all child tasks/stories are closed, confirm no regressions).
|
|
113
|
+
|
|
114
|
+
Epic Implementation:
|
|
115
|
+
|
|
116
|
+
1. Use the output of Epic Triage as your guide. Do not skip triage.
|
|
117
|
+
2. Work through each task and/or story in the order defined during triage, respecting dependencies.
|
|
118
|
+
3. Apply the Bug Implementation and Task Implementation processes to each child bug or task, respectively, as you work through them.
|
|
119
|
+
4. Continuously update the epic and its child issues in JIRA as progress is made.
|
|
120
|
+
5. Do not consider the epic complete until all acceptance criteria are verified in the target environment and all child issues are resolved.
|
|
121
|
+
|
|
122
|
+
Multi-Repository Awareness:
|
|
123
|
+
|
|
124
|
+
When working in a microservices architecture, the code you need may span multiple repositories. Watch for these signals that you're missing context:
|
|
125
|
+
|
|
126
|
+
1. Import paths or package references that don't resolve in the current repository
|
|
127
|
+
2. API calls to internal services where you can't find the contract, schema, or handler
|
|
128
|
+
3. Shared libraries, SDKs, or proto/OpenAPI definitions referenced but not present
|
|
129
|
+
4. Environment variables or config referencing service names you don't have code for
|
|
130
|
+
5. Error messages or stack traces pointing to code outside the current repo
|
|
131
|
+
6. JIRA issues or documentation referencing components in other repositories
|
|
132
|
+
|
|
133
|
+
When you detect any of the above:
|
|
134
|
+
1. Do NOT guess or make assumptions about what the external code does
|
|
135
|
+
2. Identify which repository contains the missing code
|
|
136
|
+
3. Add that repository to your current session before proceeding
|
|
137
|
+
4. If you cannot determine which repository contains the code, ask — do not proceed without it
|
package/package.json
CHANGED
|
@@ -74,7 +74,7 @@
|
|
|
74
74
|
"flatted": "^3.4.2"
|
|
75
75
|
},
|
|
76
76
|
"name": "@codyswann/lisa",
|
|
77
|
-
"version": "1.
|
|
77
|
+
"version": "1.67.0",
|
|
78
78
|
"description": "Claude Code governance framework that applies guardrails, guidance, and automated enforcement to projects",
|
|
79
79
|
"main": "dist/index.js",
|
|
80
80
|
"exports": {
|
|
@@ -1,21 +1,12 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "lisa",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.67.0",
|
|
4
4
|
"description": "Universal governance — agents, skills, commands, hooks, and rules for all projects",
|
|
5
5
|
"author": {
|
|
6
6
|
"name": "Cody Swann"
|
|
7
7
|
},
|
|
8
8
|
"hooks": {
|
|
9
9
|
"UserPromptSubmit": [
|
|
10
|
-
{
|
|
11
|
-
"matcher": "",
|
|
12
|
-
"hooks": [
|
|
13
|
-
{
|
|
14
|
-
"type": "command",
|
|
15
|
-
"command": "find ${CLAUDE_PLUGIN_ROOT}/rules -name '*.md' -exec cat {} \\;"
|
|
16
|
-
}
|
|
17
|
-
]
|
|
18
|
-
},
|
|
19
10
|
{
|
|
20
11
|
"matcher": "",
|
|
21
12
|
"hooks": [
|
|
@@ -1,21 +1,9 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "lisa-expo",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.67.0",
|
|
4
4
|
"description": "Expo/React Native-specific skills, agents, rules, and MCP servers",
|
|
5
5
|
"author": {
|
|
6
6
|
"name": "Cody Swann"
|
|
7
7
|
},
|
|
8
|
-
"hooks": {
|
|
9
|
-
"UserPromptSubmit": [
|
|
10
|
-
{
|
|
11
|
-
"matcher": "",
|
|
12
|
-
"hooks": [
|
|
13
|
-
{
|
|
14
|
-
"type": "command",
|
|
15
|
-
"command": "find ${CLAUDE_PLUGIN_ROOT}/rules -name '*.md' -exec cat {} \\;"
|
|
16
|
-
}
|
|
17
|
-
]
|
|
18
|
-
}
|
|
19
|
-
]
|
|
20
|
-
}
|
|
8
|
+
"hooks": {}
|
|
21
9
|
}
|
|
@@ -1,22 +1,11 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "lisa-rails",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.67.0",
|
|
4
4
|
"description": "Ruby on Rails-specific hooks — RuboCop linting/formatting and ast-grep scanning on edit",
|
|
5
5
|
"author": {
|
|
6
6
|
"name": "Cody Swann"
|
|
7
7
|
},
|
|
8
8
|
"hooks": {
|
|
9
|
-
"UserPromptSubmit": [
|
|
10
|
-
{
|
|
11
|
-
"matcher": "",
|
|
12
|
-
"hooks": [
|
|
13
|
-
{
|
|
14
|
-
"type": "command",
|
|
15
|
-
"command": "find ${CLAUDE_PLUGIN_ROOT}/rules -name '*.md' -exec cat {} \\;"
|
|
16
|
-
}
|
|
17
|
-
]
|
|
18
|
-
}
|
|
19
|
-
],
|
|
20
9
|
"PostToolUse": [
|
|
21
10
|
{
|
|
22
11
|
"matcher": "Write|Edit",
|
|
@@ -1,22 +1,11 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "lisa-typescript",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.67.0",
|
|
4
4
|
"description": "TypeScript-specific hooks — Prettier formatting, ESLint linting, and ast-grep scanning on edit",
|
|
5
5
|
"author": {
|
|
6
6
|
"name": "Cody Swann"
|
|
7
7
|
},
|
|
8
8
|
"hooks": {
|
|
9
|
-
"UserPromptSubmit": [
|
|
10
|
-
{
|
|
11
|
-
"matcher": "",
|
|
12
|
-
"hooks": [
|
|
13
|
-
{
|
|
14
|
-
"type": "command",
|
|
15
|
-
"command": "find ${CLAUDE_PLUGIN_ROOT}/rules -name '*.md' -exec cat {} \\;"
|
|
16
|
-
}
|
|
17
|
-
]
|
|
18
|
-
}
|
|
19
|
-
],
|
|
20
9
|
"PostToolUse": [
|
|
21
10
|
{
|
|
22
11
|
"matcher": "Write|Edit",
|
|
@@ -5,15 +5,6 @@
|
|
|
5
5
|
"author": { "name": "Cody Swann" },
|
|
6
6
|
"hooks": {
|
|
7
7
|
"UserPromptSubmit": [
|
|
8
|
-
{
|
|
9
|
-
"matcher": "",
|
|
10
|
-
"hooks": [
|
|
11
|
-
{
|
|
12
|
-
"type": "command",
|
|
13
|
-
"command": "find ${CLAUDE_PLUGIN_ROOT}/rules -name '*.md' -exec cat {} \\;"
|
|
14
|
-
}
|
|
15
|
-
]
|
|
16
|
-
},
|
|
17
8
|
{
|
|
18
9
|
"matcher": "",
|
|
19
10
|
"hooks": [
|
|
@@ -3,17 +3,6 @@
|
|
|
3
3
|
"version": "1.0.0",
|
|
4
4
|
"description": "Expo/React Native-specific skills, agents, rules, and MCP servers",
|
|
5
5
|
"author": { "name": "Cody Swann" },
|
|
6
|
-
"hooks": {
|
|
7
|
-
|
|
8
|
-
{
|
|
9
|
-
"matcher": "",
|
|
10
|
-
"hooks": [
|
|
11
|
-
{
|
|
12
|
-
"type": "command",
|
|
13
|
-
"command": "find ${CLAUDE_PLUGIN_ROOT}/rules -name '*.md' -exec cat {} \\;"
|
|
14
|
-
}
|
|
15
|
-
]
|
|
16
|
-
}
|
|
17
|
-
]
|
|
18
|
-
}
|
|
6
|
+
"hooks": {}
|
|
7
|
+
|
|
19
8
|
}
|
|
@@ -4,17 +4,6 @@
|
|
|
4
4
|
"description": "Ruby on Rails-specific hooks — RuboCop linting/formatting and ast-grep scanning on edit",
|
|
5
5
|
"author": { "name": "Cody Swann" },
|
|
6
6
|
"hooks": {
|
|
7
|
-
"UserPromptSubmit": [
|
|
8
|
-
{
|
|
9
|
-
"matcher": "",
|
|
10
|
-
"hooks": [
|
|
11
|
-
{
|
|
12
|
-
"type": "command",
|
|
13
|
-
"command": "find ${CLAUDE_PLUGIN_ROOT}/rules -name '*.md' -exec cat {} \\;"
|
|
14
|
-
}
|
|
15
|
-
]
|
|
16
|
-
}
|
|
17
|
-
],
|
|
18
7
|
"PostToolUse": [
|
|
19
8
|
{
|
|
20
9
|
"matcher": "Write|Edit",
|
|
@@ -4,17 +4,6 @@
|
|
|
4
4
|
"description": "TypeScript-specific hooks — Prettier formatting, ESLint linting, and ast-grep scanning on edit",
|
|
5
5
|
"author": { "name": "Cody Swann" },
|
|
6
6
|
"hooks": {
|
|
7
|
-
"UserPromptSubmit": [
|
|
8
|
-
{
|
|
9
|
-
"matcher": "",
|
|
10
|
-
"hooks": [
|
|
11
|
-
{
|
|
12
|
-
"type": "command",
|
|
13
|
-
"command": "find ${CLAUDE_PLUGIN_ROOT}/rules -name '*.md' -exec cat {} \\;"
|
|
14
|
-
}
|
|
15
|
-
]
|
|
16
|
-
}
|
|
17
|
-
],
|
|
18
7
|
"PostToolUse": [
|
|
19
8
|
{
|
|
20
9
|
"matcher": "Write|Edit",
|
|
@@ -75,6 +75,12 @@ if echo "$COMMIT_MSG" | grep -qE "^Merge (branch|pull request|remote-tracking)";
|
|
|
75
75
|
exit 0
|
|
76
76
|
fi
|
|
77
77
|
|
|
78
|
+
# Skip AI co-authorship check for automated release commits (e.g., from standard-version in CI)
|
|
79
|
+
if echo "$COMMIT_MSG" | grep -qE "^chore\(release\):"; then
|
|
80
|
+
echo "🚀 Release commit detected, skipping AI co-authorship check"
|
|
81
|
+
exit 0
|
|
82
|
+
fi
|
|
83
|
+
|
|
78
84
|
echo "🤖 Checking for AI co-authorship..."
|
|
79
85
|
|
|
80
86
|
if ! echo "$COMMIT_MSG" | grep -q "Co-Authored-By:.*Claude"; then
|
|
@@ -1,240 +0,0 @@
|
|
|
1
|
-
# Claude Code Configuration
|
|
2
|
-
|
|
3
|
-
This directory contains Claude Code configuration files that customize AI-assisted development workflows.
|
|
4
|
-
|
|
5
|
-
## Directory Structure
|
|
6
|
-
|
|
7
|
-
```
|
|
8
|
-
.claude/
|
|
9
|
-
├── settings.json # Main Claude Code settings
|
|
10
|
-
├── settings.local.json # Local overrides (gitignored)
|
|
11
|
-
├── settings.local.json.example # Template for local settings
|
|
12
|
-
├── agents/ # Custom agent definitions
|
|
13
|
-
├── hooks/ # Automation hooks
|
|
14
|
-
├── rules/ # Always-on governance rules
|
|
15
|
-
└── skills/ # Skill definitions (colon-namespaced)
|
|
16
|
-
```
|
|
17
|
-
|
|
18
|
-
## Settings
|
|
19
|
-
|
|
20
|
-
### Environment Variables
|
|
21
|
-
|
|
22
|
-
| Variable | Default | Description |
|
|
23
|
-
|----------|---------|-------------|
|
|
24
|
-
| `BASH_DEFAULT_TIMEOUT_MS` | 1800000 (30 min) | Default timeout for bash commands |
|
|
25
|
-
| `BASH_MAX_TIMEOUT_MS` | 7200000 (2 hours) | Maximum allowed timeout |
|
|
26
|
-
|
|
27
|
-
### Hooks
|
|
28
|
-
|
|
29
|
-
| Event | Hook | Purpose |
|
|
30
|
-
|-------|------|---------|
|
|
31
|
-
| `SessionStart` | `install-pkgs.sh` | Install dependencies when session starts |
|
|
32
|
-
| `PostToolUse` | `format-on-edit.sh` | Auto-format files after Write/Edit operations |
|
|
33
|
-
| `Notification` | `notify-ntfy.sh` | Send notifications via ntfy.sh |
|
|
34
|
-
| `Stop` | `notify-ntfy.sh` | Notify when session ends |
|
|
35
|
-
|
|
36
|
-
## Plugins
|
|
37
|
-
|
|
38
|
-
The `enabledPlugins` section in `settings.json` references Claude Code plugins. These extend Claude Code functionality with additional capabilities.
|
|
39
|
-
|
|
40
|
-
### Plugin Sources
|
|
41
|
-
|
|
42
|
-
| Source | Description | Registration |
|
|
43
|
-
|--------|-------------|--------------|
|
|
44
|
-
| `claude-plugins-official` | Official Anthropic plugins | Built-in, no registration needed |
|
|
45
|
-
| `cc-marketplace` | Community marketplace | Available at [Claude Code Marketplace](https://marketplace.claude.ai) |
|
|
46
|
-
|
|
47
|
-
### Enabled Plugins
|
|
48
|
-
|
|
49
|
-
| Plugin | Source | Purpose |
|
|
50
|
-
|--------|--------|---------|
|
|
51
|
-
| `typescript-lsp` | `claude-plugins-official` | TypeScript language server integration |
|
|
52
|
-
| `safety-net` | `cc-marketplace` | Backup and safety features |
|
|
53
|
-
| `code-simplifier` | `claude-plugins-official` | Code complexity reduction suggestions |
|
|
54
|
-
| `code-review` | `claude-plugins-official` | Automated code review capabilities |
|
|
55
|
-
| `playwright` | `claude-plugins-official` | Playwright test integration |
|
|
56
|
-
|
|
57
|
-
### Installing Plugins
|
|
58
|
-
|
|
59
|
-
1. **Official plugins** are available by default in Claude Code
|
|
60
|
-
2. **Marketplace plugins** can be installed via the Claude Code settings UI
|
|
61
|
-
3. **Third-party plugins** require following their installation instructions
|
|
62
|
-
|
|
63
|
-
### Plugin Availability
|
|
64
|
-
|
|
65
|
-
Not all plugins may be available in all Claude Code installations:
|
|
66
|
-
|
|
67
|
-
- Some plugins require specific Claude Code versions
|
|
68
|
-
- Marketplace plugins require marketplace access
|
|
69
|
-
- Enterprise installations may restrict available plugins
|
|
70
|
-
|
|
71
|
-
If a plugin is not available, Claude Code will ignore it gracefully.
|
|
72
|
-
|
|
73
|
-
## Local Settings Override
|
|
74
|
-
|
|
75
|
-
Create `settings.local.json` to override settings for your local environment:
|
|
76
|
-
|
|
77
|
-
```json
|
|
78
|
-
{
|
|
79
|
-
"env": {
|
|
80
|
-
"CUSTOM_API_KEY": "your-key-here"
|
|
81
|
-
},
|
|
82
|
-
"hooks": {
|
|
83
|
-
"PostToolUse": []
|
|
84
|
-
},
|
|
85
|
-
"enabledPlugins": {
|
|
86
|
-
"playwright": false
|
|
87
|
-
}
|
|
88
|
-
}
|
|
89
|
-
```
|
|
90
|
-
|
|
91
|
-
This file should be:
|
|
92
|
-
- Added to `.gitignore`
|
|
93
|
-
- Never committed to version control
|
|
94
|
-
- Used for machine-specific settings
|
|
95
|
-
|
|
96
|
-
## Agents
|
|
97
|
-
|
|
98
|
-
Custom agent definitions in `agents/` provide specialized AI personas for different tasks:
|
|
99
|
-
|
|
100
|
-
| Agent | Purpose |
|
|
101
|
-
|-------|---------|
|
|
102
|
-
| `agent-architect.md` | Agent file design and optimization |
|
|
103
|
-
| `architecture-specialist.md` | Implementation design, dependency mapping, pattern evaluation |
|
|
104
|
-
| `git-history-analyzer.md` | Git history analysis |
|
|
105
|
-
| `hooks-expert.md` | Claude Code hooks expertise |
|
|
106
|
-
| `implementer.md` | Code implementation with TDD enforcement |
|
|
107
|
-
| `learner.md` | Post-implementation learning and skill creation |
|
|
108
|
-
| `performance-specialist.md` | N+1 queries, algorithmic complexity, memory leaks |
|
|
109
|
-
| `product-specialist.md` | User flows, acceptance criteria, UX validation |
|
|
110
|
-
| `quality-specialist.md` | Code correctness, coding philosophy, test coverage review |
|
|
111
|
-
| `security-specialist.md` | Threat modeling (STRIDE), OWASP Top 10, auth/secrets review |
|
|
112
|
-
| `skill-evaluator.md` | Skill quality assessment |
|
|
113
|
-
| `slash-command-architect.md` | Command design |
|
|
114
|
-
| `test-specialist.md` | Test strategy, test writing, coverage analysis |
|
|
115
|
-
| `web-search-researcher.md` | Web research tasks |
|
|
116
|
-
|
|
117
|
-
## Skills
|
|
118
|
-
|
|
119
|
-
Skills use colon-namespaced directories (e.g., `plan:create/`) and are invoked via `/skill-name` in Claude Code.
|
|
120
|
-
|
|
121
|
-
### Plan Skills
|
|
122
|
-
|
|
123
|
-
| Skill | Purpose |
|
|
124
|
-
|-------|---------|
|
|
125
|
-
| `plan:create` | Create implementation plans from ticket URLs, file paths, or text descriptions |
|
|
126
|
-
| `plan:implement` | Execute an existing plan with an Agent Team |
|
|
127
|
-
| `plan:add-test-coverage` | Increase test coverage to a target threshold |
|
|
128
|
-
| `plan:fix-linter-error` | Fix all violations of specific ESLint rules |
|
|
129
|
-
| `plan:local-code-review` | Review local branch changes against main |
|
|
130
|
-
| `plan:lower-code-complexity` | Reduce cognitive complexity threshold |
|
|
131
|
-
| `plan:reduce-max-lines` | Reduce max file lines threshold |
|
|
132
|
-
| `plan:reduce-max-lines-per-function` | Reduce max function lines threshold |
|
|
133
|
-
|
|
134
|
-
### Git Skills
|
|
135
|
-
|
|
136
|
-
| Skill | Purpose |
|
|
137
|
-
|-------|---------|
|
|
138
|
-
| `git:commit` | Create conventional commits for current changes |
|
|
139
|
-
| `git:commit-and-submit-pr` | Commit changes and create/update a pull request |
|
|
140
|
-
| `git:submit-pr` | Push changes and create or update a pull request |
|
|
141
|
-
| `git:prune` | Prune local branches deleted on remote |
|
|
142
|
-
|
|
143
|
-
### Integration Skills
|
|
144
|
-
|
|
145
|
-
| Skill | Purpose |
|
|
146
|
-
|-------|---------|
|
|
147
|
-
| `jira:create` | Create JIRA epics, stories, and tasks |
|
|
148
|
-
| `jira:verify` | Verify JIRA ticket meets organizational standards |
|
|
149
|
-
| `jira:sync` | Sync plan progress to linked JIRA tickets |
|
|
150
|
-
| `sonarqube:check` | Check SonarQube/SonarCloud quality gate failures |
|
|
151
|
-
| `sonarqube:fix` | Fix SonarQube quality gate failures |
|
|
152
|
-
| `pull-request:review` | Check and implement PR review comments |
|
|
153
|
-
| `security:zap-scan` | Run OWASP ZAP baseline security scan |
|
|
154
|
-
|
|
155
|
-
### Utility Skills
|
|
156
|
-
|
|
157
|
-
| Skill | Purpose |
|
|
158
|
-
|-------|---------|
|
|
159
|
-
| `tasks:load` | Load tasks from project directory into session |
|
|
160
|
-
| `tasks:sync` | Export session tasks to project directory |
|
|
161
|
-
| `skill-creator` | Guide for creating new skills |
|
|
162
|
-
| `agent-design-best-practices` | Best practices for designing agent files |
|
|
163
|
-
| `jsdoc-best-practices` | JSDoc documentation standards |
|
|
164
|
-
|
|
165
|
-
See each skill's `SKILL.md` for detailed documentation.
|
|
166
|
-
|
|
167
|
-
## Customization
|
|
168
|
-
|
|
169
|
-
### Adding Custom Skills
|
|
170
|
-
|
|
171
|
-
Skills contain implementation logic and use hyphen-separated naming:
|
|
172
|
-
|
|
173
|
-
```bash
|
|
174
|
-
mkdir -p .claude/skills/my-namespace-my-skill
|
|
175
|
-
cat > .claude/skills/my-namespace-my-skill/SKILL.md << 'EOF'
|
|
176
|
-
---
|
|
177
|
-
name: my-namespace-my-skill
|
|
178
|
-
description: "What this skill does"
|
|
179
|
-
---
|
|
180
|
-
|
|
181
|
-
# My Skill
|
|
182
|
-
|
|
183
|
-
Instructions for the skill...
|
|
184
|
-
EOF
|
|
185
|
-
```
|
|
186
|
-
|
|
187
|
-
### Adding Custom Commands
|
|
188
|
-
|
|
189
|
-
Commands are user-facing pass-throughs to skills. Directory nesting creates colon-separated names in the UI (e.g., `my-namespace/my-skill.md` becomes `/my-namespace:my-skill`):
|
|
190
|
-
|
|
191
|
-
```bash
|
|
192
|
-
mkdir -p .claude/commands/my-namespace
|
|
193
|
-
cat > .claude/commands/my-namespace/my-skill.md << 'EOF'
|
|
194
|
-
---
|
|
195
|
-
description: "What this command does"
|
|
196
|
-
allowed-tools: ["Skill"]
|
|
197
|
-
argument-hint: "<arguments>"
|
|
198
|
-
---
|
|
199
|
-
|
|
200
|
-
Use the /my-namespace-my-skill skill to do the thing. $ARGUMENTS
|
|
201
|
-
EOF
|
|
202
|
-
```
|
|
203
|
-
|
|
204
|
-
### Adding Custom Agents
|
|
205
|
-
|
|
206
|
-
```bash
|
|
207
|
-
cat > .claude/agents/my-agent.md << 'EOF'
|
|
208
|
-
# My Agent
|
|
209
|
-
|
|
210
|
-
## Role
|
|
211
|
-
Specialized for specific tasks...
|
|
212
|
-
|
|
213
|
-
## Capabilities
|
|
214
|
-
- Capability 1
|
|
215
|
-
- Capability 2
|
|
216
|
-
|
|
217
|
-
## Instructions
|
|
218
|
-
How to behave...
|
|
219
|
-
EOF
|
|
220
|
-
```
|
|
221
|
-
|
|
222
|
-
## Troubleshooting
|
|
223
|
-
|
|
224
|
-
### Hooks Not Running
|
|
225
|
-
|
|
226
|
-
1. Check file permissions: `chmod +x .claude/hooks/*.sh`
|
|
227
|
-
2. Verify `$CLAUDE_PROJECT_DIR` is set correctly
|
|
228
|
-
3. Check hook timeout settings
|
|
229
|
-
|
|
230
|
-
### Plugins Not Loading
|
|
231
|
-
|
|
232
|
-
1. Verify plugin is installed in your Claude Code installation
|
|
233
|
-
2. Check marketplace access if using marketplace plugins
|
|
234
|
-
3. Review Claude Code logs for plugin errors
|
|
235
|
-
|
|
236
|
-
### Skills Not Found
|
|
237
|
-
|
|
238
|
-
1. Ensure skill directory contains a `SKILL.md` file with correct frontmatter
|
|
239
|
-
2. Restart Claude Code to reload skills
|
|
240
|
-
3. Check for syntax errors in skill definition
|
|
@@ -1,42 +0,0 @@
|
|
|
1
|
-
# Lisa-Managed Files
|
|
2
|
-
|
|
3
|
-
The following files are managed by Lisa and will be overwritten on every `lisa` run. Never edit them directly. Where a local override exists, edit that instead.
|
|
4
|
-
|
|
5
|
-
## Files with local overrides (edit the override, not the managed file)
|
|
6
|
-
|
|
7
|
-
| Managed File (do not edit) | Local Override (edit this instead) |
|
|
8
|
-
|---|---|
|
|
9
|
-
| `.rubocop.yml` | `.rubocop.local.yml` |
|
|
10
|
-
|
|
11
|
-
## Create-only files (edit freely, Lisa won't overwrite)
|
|
12
|
-
|
|
13
|
-
- `.claude/rules/PROJECT_RULES.md`
|
|
14
|
-
- `.rubocop.local.yml`
|
|
15
|
-
- `.simplecov`
|
|
16
|
-
- `.reek.yml`
|
|
17
|
-
- `.rspec`
|
|
18
|
-
- `simplecov.thresholds.json`
|
|
19
|
-
- `rubocop.thresholds.yml`
|
|
20
|
-
- `sonar-project.properties`
|
|
21
|
-
- `spec/spec_helper.rb`
|
|
22
|
-
- `spec/rails_helper.rb`
|
|
23
|
-
- `.github/workflows/ci.yml`
|
|
24
|
-
- `.github/workflows/claude-nightly-test-coverage.yml`
|
|
25
|
-
- `.github/workflows/claude-nightly-code-complexity.yml`
|
|
26
|
-
- `.github/workflows/claude-nightly-test-improvement.yml`
|
|
27
|
-
- `VERSION`
|
|
28
|
-
|
|
29
|
-
## Deep-merged by Lisa (Lisa wins conflicts, but project can add its own keys)
|
|
30
|
-
|
|
31
|
-
- `.claude/settings.json`
|
|
32
|
-
|
|
33
|
-
## Plugin-managed content (agents, skills, hooks, commands, rules)
|
|
34
|
-
|
|
35
|
-
These resources are distributed via the stack Claude Code plugin (`rails@lisa`). Rules — including this file — are injected into each prompt automatically. Do not add these files to your project directory.
|
|
36
|
-
|
|
37
|
-
## Copy-overwrite files (do not edit — full list)
|
|
38
|
-
|
|
39
|
-
- `.safety-net.json`
|
|
40
|
-
- `.rubocop.yml`, `.versionrc`, `lefthook.yml`, `Gemfile.lisa`
|
|
41
|
-
- `config/initializers/version.rb`
|
|
42
|
-
- `.coderabbit.yml`, `commitlint.config.cjs`
|