@codyswann/lisa 1.38.0 → 1.39.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/README.md +11 -5
- package/all/copy-overwrite/.claude/agents/agent-architect.md +0 -1
- package/all/copy-overwrite/.claude/agents/{architecture-planner.md → architecture-specialist.md} +7 -12
- package/all/copy-overwrite/.claude/agents/debug-specialist.md +204 -0
- package/all/copy-overwrite/.claude/agents/implementer.md +35 -23
- package/all/copy-overwrite/.claude/agents/learner.md +0 -1
- package/all/copy-overwrite/.claude/agents/performance-specialist.md +95 -0
- package/all/copy-overwrite/.claude/agents/{product-planner.md → product-specialist.md} +19 -14
- package/all/copy-overwrite/.claude/agents/{tech-reviewer.md → quality-specialist.md} +9 -11
- package/all/copy-overwrite/.claude/agents/{security-planner.md → security-specialist.md} +8 -13
- package/all/copy-overwrite/.claude/agents/{test-strategist.md → test-specialist.md} +20 -15
- package/all/copy-overwrite/.claude/agents/verification-specialist.md +189 -0
- package/all/copy-overwrite/.claude/commands/plan/create.md +1 -1
- package/all/copy-overwrite/.claude/commands/plan/execute.md +7 -0
- package/all/copy-overwrite/.claude/hooks/README.md +2 -2
- package/all/copy-overwrite/.claude/hooks/setup-jira-cli.sh +2 -2
- package/all/copy-overwrite/.claude/hooks/sync-tasks.sh +3 -0
- package/all/copy-overwrite/.claude/hooks/ticket-sync-reminder.sh +3 -0
- package/all/copy-overwrite/.claude/hooks/track-plan-sessions.sh +3 -0
- package/all/copy-overwrite/.claude/rules/lisa.md +2 -4
- package/all/copy-overwrite/.claude/rules/verfication.md +104 -1
- package/all/copy-overwrite/.claude/settings.json +219 -26
- package/all/copy-overwrite/.claude/skills/agent-design-best-practices/SKILL.md +219 -0
- package/all/copy-overwrite/.claude/skills/plan-add-test-coverage/SKILL.md +1 -1
- package/all/copy-overwrite/.claude/skills/plan-execute/SKILL.md +89 -0
- package/all/copy-overwrite/.claude/skills/plan-fix-linter-error/SKILL.md +1 -1
- package/all/copy-overwrite/.claude/skills/plan-lower-code-complexity/SKILL.md +1 -1
- package/all/copy-overwrite/.claude/skills/plan-reduce-max-lines/SKILL.md +1 -1
- package/all/copy-overwrite/.claude/skills/plan-reduce-max-lines-per-function/SKILL.md +1 -1
- package/all/copy-overwrite/README.md +6 -2
- package/dist/utils/fibonacci.d.ts +30 -22
- package/dist/utils/fibonacci.d.ts.map +1 -1
- package/dist/utils/fibonacci.js +40 -34
- package/dist/utils/fibonacci.js.map +1 -1
- package/package.json +1 -1
- package/rails/copy-overwrite/.claude/skills/plan-add-test-coverage/SKILL.md +1 -1
- package/rails/copy-overwrite/.claude/skills/plan-fix-linter-error/SKILL.md +1 -1
- package/rails/copy-overwrite/.claude/skills/plan-lower-code-complexity/SKILL.md +1 -1
- package/rails/copy-overwrite/.claude/skills/plan-reduce-max-lines/SKILL.md +1 -1
- package/rails/copy-overwrite/.claude/skills/plan-reduce-max-lines-per-function/SKILL.md +1 -1
- package/typescript/copy-contents/.husky/pre-push +1 -5
- package/typescript/copy-overwrite/.claude/settings.json +112 -78
- package/typescript/copy-overwrite/.github/workflows/quality.yml +1 -5
- package/all/copy-overwrite/.claude/REFERENCE.md +0 -519
- package/all/copy-overwrite/.claude/agents/codebase-analyzer.md +0 -146
- package/all/copy-overwrite/.claude/agents/codebase-locator.md +0 -125
- package/all/copy-overwrite/.claude/agents/codebase-pattern-finder.md +0 -237
- package/all/copy-overwrite/.claude/agents/consistency-checker.md +0 -58
- package/all/copy-overwrite/.claude/agents/product-reviewer.md +0 -47
- package/all/copy-overwrite/.claude/agents/spec-analyst.md +0 -41
- package/all/copy-overwrite/.claude/agents/test-coverage-agent.md +0 -17
- package/all/copy-overwrite/.claude/commands/plan/implement.md +0 -6
- package/all/copy-overwrite/.claude/rules/plan-governance.md +0 -96
- package/all/copy-overwrite/.claude/rules/plan.md +0 -79
- package/all/copy-overwrite/.claude/skills/plan-create/SKILL.md +0 -238
- package/all/copy-overwrite/.claude/skills/plan-implement/SKILL.md +0 -114
- /package/typescript/copy-overwrite/.claude/hooks/{install_pkgs.sh → install-pkgs.sh} +0 -0
|
@@ -17,9 +17,9 @@ brew install claude-code
|
|
|
17
17
|
|
|
18
18
|
> Ask Claude: "I just cloned this repo. Walk me through the full setup including installing dependencies, environment variables, and any other configuration."
|
|
19
19
|
|
|
20
|
-
## Step 3:
|
|
20
|
+
## Step 3: Build and Test
|
|
21
21
|
|
|
22
|
-
> Ask Claude: "How do I
|
|
22
|
+
> Ask Claude: "How do I build this package and run the tests?"
|
|
23
23
|
|
|
24
24
|
## Step 4: Work on a Feature
|
|
25
25
|
|
|
@@ -56,6 +56,10 @@ Or use utility commands:
|
|
|
56
56
|
|
|
57
57
|
> Ask Claude: "Increase test coverage for the files I changed."
|
|
58
58
|
|
|
59
|
+
### Publish to npm
|
|
60
|
+
|
|
61
|
+
> Ask Claude: "Walk me through publishing a new version of this package to npm."
|
|
62
|
+
|
|
59
63
|
### Deploy
|
|
60
64
|
|
|
61
65
|
> Ask Claude: "Walk me through deploying this project."
|
|
@@ -1,31 +1,36 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* @file fibonacci.ts
|
|
3
|
-
* @description
|
|
4
|
-
*
|
|
5
|
-
*
|
|
6
|
-
* the
|
|
3
|
+
* @description Tuple-based Fibonacci utilities powered by an infinite BigInt generator.
|
|
4
|
+
* BigInt avoids the precision ceiling that Number hits at F(78), where values
|
|
5
|
+
* exceed Number.MAX_SAFE_INTEGER. Every public function derives its values from
|
|
6
|
+
* fibonacciGenerator, keeping the recurrence relation in a single place.
|
|
7
7
|
* @module utils
|
|
8
8
|
*/
|
|
9
9
|
/**
|
|
10
|
-
* Infinite generator
|
|
11
|
-
*
|
|
12
|
-
*
|
|
13
|
-
*
|
|
10
|
+
* Infinite generator yielding the Fibonacci sequence as BigInts.
|
|
11
|
+
*
|
|
12
|
+
* Uses a two-element pair to track consecutive values, yielding the leading
|
|
13
|
+
* element on each iteration and advancing the pair forward. Each call returns
|
|
14
|
+
* an independent iterator, so multiple consumers never interfere.
|
|
15
|
+
*
|
|
16
|
+
* @yields The next Fibonacci number (0n, 1n, 1n, 2n, 3n, 5n, …)
|
|
14
17
|
* @example
|
|
15
18
|
* ```typescript
|
|
16
19
|
* const gen = fibonacciGenerator();
|
|
17
20
|
* gen.next().value; // 0n
|
|
18
21
|
* gen.next().value; // 1n
|
|
19
|
-
* gen.next().value; // 1n
|
|
20
22
|
* ```
|
|
21
23
|
*/
|
|
22
24
|
export declare function fibonacciGenerator(): Generator<bigint, never, unknown>;
|
|
23
25
|
/**
|
|
24
|
-
* Returns the nth Fibonacci number as a BigInt
|
|
25
|
-
*
|
|
26
|
-
*
|
|
27
|
-
*
|
|
28
|
-
*
|
|
26
|
+
* Returns the nth Fibonacci number (0-indexed) as a BigInt.
|
|
27
|
+
*
|
|
28
|
+
* Collects n + 1 values from the generator and returns the final element,
|
|
29
|
+
* delegating the recurrence to fibonacciGenerator for DRY.
|
|
30
|
+
*
|
|
31
|
+
* @param n - Zero-based position in the Fibonacci sequence (non-negative integer)
|
|
32
|
+
* @returns The nth Fibonacci number as a BigInt
|
|
33
|
+
* @throws {RangeError} When n is negative, fractional, NaN, or infinite
|
|
29
34
|
* @example
|
|
30
35
|
* ```typescript
|
|
31
36
|
* fibonacci(0); // 0n
|
|
@@ -33,19 +38,22 @@ export declare function fibonacciGenerator(): Generator<bigint, never, unknown>;
|
|
|
33
38
|
* fibonacci(78); // 8944394323791464n — beyond Number.MAX_SAFE_INTEGER
|
|
34
39
|
* ```
|
|
35
40
|
*/
|
|
36
|
-
export declare
|
|
41
|
+
export declare const fibonacci: (n: number) => bigint;
|
|
37
42
|
/**
|
|
38
|
-
* Returns the first `length` Fibonacci numbers as a readonly BigInt array
|
|
39
|
-
*
|
|
40
|
-
*
|
|
41
|
-
*
|
|
42
|
-
*
|
|
43
|
-
*
|
|
43
|
+
* Returns the first `length` Fibonacci numbers as a readonly BigInt array.
|
|
44
|
+
*
|
|
45
|
+
* Spreads an empty array of the requested size and maps each slot to the
|
|
46
|
+
* next generator value, delegating the recurrence to fibonacciGenerator for DRY.
|
|
47
|
+
* Returns a fresh array on every call so callers can safely consume the result.
|
|
48
|
+
*
|
|
49
|
+
* @param length - How many Fibonacci numbers to collect (non-negative integer)
|
|
50
|
+
* @returns A new readonly array of the first `length` Fibonacci numbers
|
|
51
|
+
* @throws {RangeError} When length is negative, fractional, NaN, or infinite
|
|
44
52
|
* @example
|
|
45
53
|
* ```typescript
|
|
46
54
|
* fibonacciSequence(0); // []
|
|
47
55
|
* fibonacciSequence(5); // [0n, 1n, 1n, 2n, 3n]
|
|
48
56
|
* ```
|
|
49
57
|
*/
|
|
50
|
-
export declare
|
|
58
|
+
export declare const fibonacciSequence: (length: number) => readonly bigint[];
|
|
51
59
|
//# sourceMappingURL=fibonacci.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fibonacci.d.ts","sourceRoot":"","sources":["../../src/utils/fibonacci.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH
|
|
1
|
+
{"version":3,"file":"fibonacci.d.ts","sourceRoot":"","sources":["../../src/utils/fibonacci.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH;;;;;;;;;;;;;;GAcG;AACH,wBAAiB,kBAAkB,IAAI,SAAS,CAAC,MAAM,EAAE,KAAK,EAAE,OAAO,CAAC,CASvE;AAED;;;;;;;;;;;;;;;GAeG;AACH,eAAO,MAAM,SAAS,MAAO,MAAM,KAAG,MAYrC,CAAC;AAEF;;;;;;;;;;;;;;;GAeG;AACH,eAAO,MAAM,iBAAiB,WAAY,MAAM,KAAG,SAAS,MAAM,EASjE,CAAC"}
|
package/dist/utils/fibonacci.js
CHANGED
|
@@ -1,40 +1,44 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* @file fibonacci.ts
|
|
3
|
-
* @description
|
|
4
|
-
*
|
|
5
|
-
*
|
|
6
|
-
* the
|
|
3
|
+
* @description Tuple-based Fibonacci utilities powered by an infinite BigInt generator.
|
|
4
|
+
* BigInt avoids the precision ceiling that Number hits at F(78), where values
|
|
5
|
+
* exceed Number.MAX_SAFE_INTEGER. Every public function derives its values from
|
|
6
|
+
* fibonacciGenerator, keeping the recurrence relation in a single place.
|
|
7
7
|
* @module utils
|
|
8
8
|
*/
|
|
9
9
|
/**
|
|
10
|
-
* Infinite generator
|
|
11
|
-
*
|
|
12
|
-
*
|
|
13
|
-
*
|
|
10
|
+
* Infinite generator yielding the Fibonacci sequence as BigInts.
|
|
11
|
+
*
|
|
12
|
+
* Uses a two-element pair to track consecutive values, yielding the leading
|
|
13
|
+
* element on each iteration and advancing the pair forward. Each call returns
|
|
14
|
+
* an independent iterator, so multiple consumers never interfere.
|
|
15
|
+
*
|
|
16
|
+
* @yields The next Fibonacci number (0n, 1n, 1n, 2n, 3n, 5n, …)
|
|
14
17
|
* @example
|
|
15
18
|
* ```typescript
|
|
16
19
|
* const gen = fibonacciGenerator();
|
|
17
20
|
* gen.next().value; // 0n
|
|
18
21
|
* gen.next().value; // 1n
|
|
19
|
-
* gen.next().value; // 1n
|
|
20
22
|
* ```
|
|
21
23
|
*/
|
|
22
24
|
export function* fibonacciGenerator() {
|
|
23
|
-
/* eslint-disable functional/no-let -- generator requires mutable
|
|
24
|
-
let
|
|
25
|
-
let
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
[a, b] = [b, a + b];
|
|
25
|
+
/* eslint-disable functional/no-let -- generator requires mutable pair to track consecutive Fibonacci values */
|
|
26
|
+
let pair = [0n, 1n];
|
|
27
|
+
/* eslint-enable functional/no-let -- re-enable after generator state declaration */
|
|
28
|
+
for (;;) {
|
|
29
|
+
yield pair[0];
|
|
30
|
+
pair = [pair[1], pair[0] + pair[1]];
|
|
30
31
|
}
|
|
31
32
|
}
|
|
32
33
|
/**
|
|
33
|
-
* Returns the nth Fibonacci number as a BigInt
|
|
34
|
-
*
|
|
35
|
-
*
|
|
36
|
-
*
|
|
37
|
-
*
|
|
34
|
+
* Returns the nth Fibonacci number (0-indexed) as a BigInt.
|
|
35
|
+
*
|
|
36
|
+
* Collects n + 1 values from the generator and returns the final element,
|
|
37
|
+
* delegating the recurrence to fibonacciGenerator for DRY.
|
|
38
|
+
*
|
|
39
|
+
* @param n - Zero-based position in the Fibonacci sequence (non-negative integer)
|
|
40
|
+
* @returns The nth Fibonacci number as a BigInt
|
|
41
|
+
* @throws {RangeError} When n is negative, fractional, NaN, or infinite
|
|
38
42
|
* @example
|
|
39
43
|
* ```typescript
|
|
40
44
|
* fibonacci(0); // 0n
|
|
@@ -42,32 +46,34 @@ export function* fibonacciGenerator() {
|
|
|
42
46
|
* fibonacci(78); // 8944394323791464n — beyond Number.MAX_SAFE_INTEGER
|
|
43
47
|
* ```
|
|
44
48
|
*/
|
|
45
|
-
export
|
|
49
|
+
export const fibonacci = (n) => {
|
|
46
50
|
if (!Number.isFinite(n) || !Number.isInteger(n) || n < 0) {
|
|
47
51
|
throw new RangeError(`Expected a non-negative integer for n, got ${String(n)}`);
|
|
48
52
|
}
|
|
49
53
|
const gen = fibonacciGenerator();
|
|
50
|
-
Array.from({ length: n }
|
|
51
|
-
|
|
52
|
-
}
|
|
54
|
+
return Array.from({ length: n + 1 }).reduce(() => gen.next().value, 0n);
|
|
55
|
+
};
|
|
53
56
|
/**
|
|
54
|
-
* Returns the first `length` Fibonacci numbers as a readonly BigInt array
|
|
55
|
-
*
|
|
56
|
-
*
|
|
57
|
-
*
|
|
58
|
-
*
|
|
59
|
-
*
|
|
57
|
+
* Returns the first `length` Fibonacci numbers as a readonly BigInt array.
|
|
58
|
+
*
|
|
59
|
+
* Spreads an empty array of the requested size and maps each slot to the
|
|
60
|
+
* next generator value, delegating the recurrence to fibonacciGenerator for DRY.
|
|
61
|
+
* Returns a fresh array on every call so callers can safely consume the result.
|
|
62
|
+
*
|
|
63
|
+
* @param length - How many Fibonacci numbers to collect (non-negative integer)
|
|
64
|
+
* @returns A new readonly array of the first `length` Fibonacci numbers
|
|
65
|
+
* @throws {RangeError} When length is negative, fractional, NaN, or infinite
|
|
60
66
|
* @example
|
|
61
67
|
* ```typescript
|
|
62
68
|
* fibonacciSequence(0); // []
|
|
63
69
|
* fibonacciSequence(5); // [0n, 1n, 1n, 2n, 3n]
|
|
64
70
|
* ```
|
|
65
71
|
*/
|
|
66
|
-
export
|
|
72
|
+
export const fibonacciSequence = (length) => {
|
|
67
73
|
if (!Number.isFinite(length) || !Number.isInteger(length) || length < 0) {
|
|
68
74
|
throw new RangeError(`Expected a non-negative integer for length, got ${String(length)}`);
|
|
69
75
|
}
|
|
70
76
|
const gen = fibonacciGenerator();
|
|
71
|
-
return Array
|
|
72
|
-
}
|
|
77
|
+
return [...Array(length)].map(() => gen.next().value);
|
|
78
|
+
};
|
|
73
79
|
//# sourceMappingURL=fibonacci.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fibonacci.js","sourceRoot":"","sources":["../../src/utils/fibonacci.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH
|
|
1
|
+
{"version":3,"file":"fibonacci.js","sourceRoot":"","sources":["../../src/utils/fibonacci.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH;;;;;;;;;;;;;;GAcG;AACH,MAAM,SAAS,CAAC,CAAC,kBAAkB;IACjC,+GAA+G;IAC/G,IAAI,IAAI,GAA8B,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;IAC/C,oFAAoF;IAEpF,SAAS,CAAC;QACR,MAAM,IAAI,CAAC,CAAC,CAAC,CAAC;QACd,IAAI,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;IACtC,CAAC;AACH,CAAC;AAED;;;;;;;;;;;;;;;GAeG;AACH,MAAM,CAAC,MAAM,SAAS,GAAG,CAAC,CAAS,EAAU,EAAE;IAC7C,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;QACzD,MAAM,IAAI,UAAU,CAClB,8CAA8C,MAAM,CAAC,CAAC,CAAC,EAAE,CAC1D,CAAC;IACJ,CAAC;IAED,MAAM,GAAG,GAAG,kBAAkB,EAAE,CAAC;IACjC,OAAO,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,MAAM,CACzC,GAAG,EAAE,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,KAAK,EACtB,EAAE,CACH,CAAC;AACJ,CAAC,CAAC;AAEF;;;;;;;;;;;;;;;GAeG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,MAAc,EAAqB,EAAE;IACrE,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,MAAM,GAAG,CAAC,EAAE,CAAC;QACxE,MAAM,IAAI,UAAU,CAClB,mDAAmD,MAAM,CAAC,MAAM,CAAC,EAAE,CACpE,CAAC;IACJ,CAAC;IAED,MAAM,GAAG,GAAG,kBAAkB,EAAE,CAAC;IACjC,OAAO,CAAC,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC;AACxD,CAAC,CAAC"}
|
package/package.json
CHANGED
|
@@ -89,7 +89,7 @@
|
|
|
89
89
|
"@isaacs/brace-expansion": "^5.0.1"
|
|
90
90
|
},
|
|
91
91
|
"name": "@codyswann/lisa",
|
|
92
|
-
"version": "1.
|
|
92
|
+
"version": "1.39.0",
|
|
93
93
|
"description": "Claude Code governance framework that applies guardrails, guidance, and automated enforcement to projects",
|
|
94
94
|
"main": "dist/index.js",
|
|
95
95
|
"bin": {
|
|
@@ -42,4 +42,4 @@ Configuration: .simplecov, update minimum_coverage to $ARGUMENTS%
|
|
|
42
42
|
Verification: `bundle exec rspec` -> Expected: SimpleCov reports >= $ARGUMENTS% coverage
|
|
43
43
|
```
|
|
44
44
|
|
|
45
|
-
Invoke `/plan-
|
|
45
|
+
Invoke `/plan-execute` with this brief to create the implementation plan.
|
|
@@ -42,4 +42,4 @@ Fix strategies: extract methods, reduce complexity, apply auto-correct where saf
|
|
|
42
42
|
Verification: `bundle exec rubocop --format simple 2>&1 | grep -E "($ARGUMENTS)" | wc -l` -> Expected: 0
|
|
43
43
|
```
|
|
44
44
|
|
|
45
|
-
Invoke `/plan-
|
|
45
|
+
Invoke `/plan-execute` with this brief to create the implementation plan.
|
|
@@ -45,4 +45,4 @@ Refactoring strategies: extract methods, early returns, extract conditions, use
|
|
|
45
45
|
Verification: `bundle exec rubocop --only Metrics/CyclomaticComplexity --format simple 2>&1 | grep "offense" | wc -l` -> Expected: 0
|
|
46
46
|
```
|
|
47
47
|
|
|
48
|
-
Invoke `/plan-
|
|
48
|
+
Invoke `/plan-execute` with this brief to create the implementation plan.
|
|
@@ -43,4 +43,4 @@ Refactoring strategies: extract concerns, extract service objects, remove duplic
|
|
|
43
43
|
Verification: `bundle exec rubocop --only Metrics/ClassLength,Metrics/ModuleLength --format simple 2>&1 | grep "offense" | wc -l` -> Expected: 0
|
|
44
44
|
```
|
|
45
45
|
|
|
46
|
-
Invoke `/plan-
|
|
46
|
+
Invoke `/plan-execute` with this brief to create the implementation plan.
|
|
@@ -43,4 +43,4 @@ Refactoring strategies: extract methods, early returns, extract conditions, use
|
|
|
43
43
|
Verification: `bundle exec rubocop --only Metrics/MethodLength --format simple 2>&1 | grep "offense" | wc -l` -> Expected: 0
|
|
44
44
|
```
|
|
45
45
|
|
|
46
|
-
Invoke `/plan-
|
|
46
|
+
Invoke `/plan-execute` with this brief to create the implementation plan.
|
|
@@ -85,11 +85,7 @@ elif [ "$PACKAGE_MANAGER" = "bun" ]; then
|
|
|
85
85
|
# Parent packages pin ^4.4.1; fix requires major version 5.x (incompatible)
|
|
86
86
|
# Risk: None - CLI build tool, not a production runtime dependency
|
|
87
87
|
|
|
88
|
-
|
|
89
|
-
# Transitive dependency via aws-amplify > @aws-amplify/api-rest > axios
|
|
90
|
-
# bun overrides/resolutions cannot reach nested node_modules copies
|
|
91
|
-
# Risk: Low - only affects server-side mergeConfig with attacker-controlled input
|
|
92
|
-
if ! bun audit --audit-level=high --ignore GHSA-5j98-mcp5-4vw2 --ignore GHSA-8qq5-rm4j-mr97 --ignore GHSA-37qj-frw5-hhjh --ignore GHSA-43fc-jf86-j433; then
|
|
88
|
+
if ! bun audit --audit-level=high --ignore GHSA-5j98-mcp5-4vw2 --ignore GHSA-8qq5-rm4j-mr97 --ignore GHSA-37qj-frw5-hhjh; then
|
|
93
89
|
echo "⚠️ Security audit failed. Please fix high/critical vulnerabilities before pushing."
|
|
94
90
|
exit 1
|
|
95
91
|
fi
|
|
@@ -1,13 +1,31 @@
|
|
|
1
1
|
{
|
|
2
|
+
"attribution": {
|
|
3
|
+
"commit": "🤖 Generated with Claude Code\n\nCo-Authored-By: Claude",
|
|
4
|
+
"pr": "🤖 Generated with Claude Code"
|
|
5
|
+
},
|
|
6
|
+
"enabledPlugins": {
|
|
7
|
+
"typescript-lsp@claude-plugins-official": true,
|
|
8
|
+
"safety-net@cc-marketplace": true,
|
|
9
|
+
"code-simplifier@claude-plugins-official": true,
|
|
10
|
+
"code-review@claude-plugins-official": true,
|
|
11
|
+
"playwright@claude-plugins-official": true,
|
|
12
|
+
"coderabbit@claude-plugins-official": true
|
|
13
|
+
},
|
|
14
|
+
"env": {
|
|
15
|
+
"BASH_DEFAULT_TIMEOUT_MS": "1800000",
|
|
16
|
+
"BASH_MAX_TIMEOUT_MS": "7200000",
|
|
17
|
+
"CLAUDE_DEBUG": "0",
|
|
18
|
+
"CLAUDE_CODE_EXPERIMENTAL_AGENT_TEAMS": "1"
|
|
19
|
+
},
|
|
2
20
|
"hooks": {
|
|
3
|
-
"
|
|
21
|
+
"Notification": [
|
|
4
22
|
{
|
|
5
|
-
"matcher": "",
|
|
23
|
+
"matcher": "permission_prompt|idle_prompt",
|
|
6
24
|
"hooks": [
|
|
7
25
|
{
|
|
8
26
|
"type": "command",
|
|
9
|
-
"command": "
|
|
10
|
-
"timeout":
|
|
27
|
+
"command": "$CLAUDE_PROJECT_DIR/.claude/hooks/notify-ntfy.sh",
|
|
28
|
+
"timeout": 5
|
|
11
29
|
}
|
|
12
30
|
]
|
|
13
31
|
},
|
|
@@ -16,11 +34,13 @@
|
|
|
16
34
|
"hooks": [
|
|
17
35
|
{
|
|
18
36
|
"type": "command",
|
|
19
|
-
"command": "$CLAUDE_PROJECT_DIR/.claude/hooks/
|
|
37
|
+
"command": "$CLAUDE_PROJECT_DIR/.claude/hooks/debug-hook.sh",
|
|
20
38
|
"timeout": 5
|
|
21
39
|
}
|
|
22
40
|
]
|
|
23
|
-
}
|
|
41
|
+
}
|
|
42
|
+
],
|
|
43
|
+
"PermissionRequest": [
|
|
24
44
|
{
|
|
25
45
|
"matcher": "",
|
|
26
46
|
"hooks": [
|
|
@@ -32,24 +52,26 @@
|
|
|
32
52
|
]
|
|
33
53
|
}
|
|
34
54
|
],
|
|
35
|
-
"
|
|
55
|
+
"PostToolUse": [
|
|
36
56
|
{
|
|
37
|
-
"matcher": "
|
|
57
|
+
"matcher": "Write|Edit",
|
|
38
58
|
"hooks": [
|
|
39
59
|
{
|
|
40
60
|
"type": "command",
|
|
41
|
-
"command": "$CLAUDE_PROJECT_DIR/.claude/hooks/
|
|
42
|
-
|
|
61
|
+
"command": "$CLAUDE_PROJECT_DIR/.claude/hooks/format-on-edit.sh"
|
|
62
|
+
},
|
|
63
|
+
{
|
|
64
|
+
"type": "command",
|
|
65
|
+
"command": "$CLAUDE_PROJECT_DIR/.claude/hooks/sg-scan-on-edit.sh"
|
|
43
66
|
}
|
|
44
67
|
]
|
|
45
68
|
},
|
|
46
69
|
{
|
|
47
|
-
"matcher": "",
|
|
70
|
+
"matcher": "TaskCreate|TaskUpdate",
|
|
48
71
|
"hooks": [
|
|
49
72
|
{
|
|
50
73
|
"type": "command",
|
|
51
|
-
"command": "$CLAUDE_PROJECT_DIR/.claude/hooks/
|
|
52
|
-
"timeout": 5
|
|
74
|
+
"command": "$CLAUDE_PROJECT_DIR/.claude/hooks/sync-tasks.sh"
|
|
53
75
|
}
|
|
54
76
|
]
|
|
55
77
|
},
|
|
@@ -58,13 +80,30 @@
|
|
|
58
80
|
"hooks": [
|
|
59
81
|
{
|
|
60
82
|
"type": "command",
|
|
61
|
-
"command": "$CLAUDE_PROJECT_DIR/.claude/hooks/debug-hook.sh"
|
|
62
|
-
|
|
83
|
+
"command": "$CLAUDE_PROJECT_DIR/.claude/hooks/debug-hook.sh"
|
|
84
|
+
}
|
|
85
|
+
]
|
|
86
|
+
},
|
|
87
|
+
{
|
|
88
|
+
"matcher": "Task",
|
|
89
|
+
"hooks": [
|
|
90
|
+
{
|
|
91
|
+
"type": "command",
|
|
92
|
+
"command": "command -v entire >/dev/null 2>&1 && entire hooks claude-code post-task || true"
|
|
93
|
+
}
|
|
94
|
+
]
|
|
95
|
+
},
|
|
96
|
+
{
|
|
97
|
+
"matcher": "TodoWrite",
|
|
98
|
+
"hooks": [
|
|
99
|
+
{
|
|
100
|
+
"type": "command",
|
|
101
|
+
"command": "command -v entire >/dev/null 2>&1 && entire hooks claude-code post-todo || true"
|
|
63
102
|
}
|
|
64
103
|
]
|
|
65
104
|
}
|
|
66
105
|
],
|
|
67
|
-
"
|
|
106
|
+
"PostToolUseFailure": [
|
|
68
107
|
{
|
|
69
108
|
"matcher": "",
|
|
70
109
|
"hooks": [
|
|
@@ -76,7 +115,7 @@
|
|
|
76
115
|
]
|
|
77
116
|
}
|
|
78
117
|
],
|
|
79
|
-
"
|
|
118
|
+
"PreCompact": [
|
|
80
119
|
{
|
|
81
120
|
"matcher": "",
|
|
82
121
|
"hooks": [
|
|
@@ -94,35 +133,42 @@
|
|
|
94
133
|
"hooks": [
|
|
95
134
|
{
|
|
96
135
|
"type": "command",
|
|
97
|
-
"command": "$CLAUDE_PROJECT_DIR/.claude/hooks/debug-hook.sh"
|
|
98
|
-
|
|
136
|
+
"command": "$CLAUDE_PROJECT_DIR/.claude/hooks/debug-hook.sh"
|
|
137
|
+
}
|
|
138
|
+
]
|
|
139
|
+
},
|
|
140
|
+
{
|
|
141
|
+
"matcher": "Task",
|
|
142
|
+
"hooks": [
|
|
143
|
+
{
|
|
144
|
+
"type": "command",
|
|
145
|
+
"command": "command -v entire >/dev/null 2>&1 && entire hooks claude-code pre-task || true"
|
|
99
146
|
}
|
|
100
147
|
]
|
|
101
148
|
}
|
|
102
149
|
],
|
|
103
|
-
"
|
|
150
|
+
"SessionEnd": [
|
|
104
151
|
{
|
|
105
|
-
"matcher": "
|
|
152
|
+
"matcher": "",
|
|
106
153
|
"hooks": [
|
|
107
154
|
{
|
|
108
155
|
"type": "command",
|
|
109
|
-
"command": "$CLAUDE_PROJECT_DIR/.claude/hooks/
|
|
110
|
-
"timeout": 10
|
|
156
|
+
"command": "$CLAUDE_PROJECT_DIR/.claude/hooks/debug-hook.sh"
|
|
111
157
|
},
|
|
112
158
|
{
|
|
113
159
|
"type": "command",
|
|
114
|
-
"command": "
|
|
115
|
-
"timeout": 30
|
|
160
|
+
"command": "command -v entire >/dev/null 2>&1 && entire hooks claude-code session-end || true"
|
|
116
161
|
}
|
|
117
162
|
]
|
|
118
|
-
}
|
|
163
|
+
}
|
|
164
|
+
],
|
|
165
|
+
"SessionStart": [
|
|
119
166
|
{
|
|
120
|
-
"matcher": "
|
|
167
|
+
"matcher": "startup",
|
|
121
168
|
"hooks": [
|
|
122
169
|
{
|
|
123
170
|
"type": "command",
|
|
124
|
-
"command": "$CLAUDE_PROJECT_DIR/.claude/hooks/
|
|
125
|
-
"timeout": 10
|
|
171
|
+
"command": "$CLAUDE_PROJECT_DIR/.claude/hooks/install-pkgs.sh"
|
|
126
172
|
}
|
|
127
173
|
]
|
|
128
174
|
},
|
|
@@ -131,25 +177,25 @@
|
|
|
131
177
|
"hooks": [
|
|
132
178
|
{
|
|
133
179
|
"type": "command",
|
|
134
|
-
"command": "$CLAUDE_PROJECT_DIR/.claude/hooks/
|
|
135
|
-
|
|
180
|
+
"command": "$CLAUDE_PROJECT_DIR/.claude/hooks/setup-jira-cli.sh"
|
|
181
|
+
},
|
|
182
|
+
{
|
|
183
|
+
"type": "command",
|
|
184
|
+
"command": "command -v entire >/dev/null 2>&1 && entire hooks claude-code session-start || true"
|
|
136
185
|
}
|
|
137
186
|
]
|
|
138
|
-
}
|
|
139
|
-
],
|
|
140
|
-
"PostToolUseFailure": [
|
|
187
|
+
},
|
|
141
188
|
{
|
|
142
189
|
"matcher": "",
|
|
143
190
|
"hooks": [
|
|
144
191
|
{
|
|
145
192
|
"type": "command",
|
|
146
|
-
"command": "$CLAUDE_PROJECT_DIR/.claude/hooks/debug-hook.sh"
|
|
147
|
-
"timeout": 5
|
|
193
|
+
"command": "$CLAUDE_PROJECT_DIR/.claude/hooks/debug-hook.sh"
|
|
148
194
|
}
|
|
149
195
|
]
|
|
150
196
|
}
|
|
151
197
|
],
|
|
152
|
-
"
|
|
198
|
+
"Setup": [
|
|
153
199
|
{
|
|
154
200
|
"matcher": "",
|
|
155
201
|
"hooks": [
|
|
@@ -161,41 +207,43 @@
|
|
|
161
207
|
]
|
|
162
208
|
}
|
|
163
209
|
],
|
|
164
|
-
"
|
|
210
|
+
"Stop": [
|
|
165
211
|
{
|
|
166
212
|
"matcher": "",
|
|
167
213
|
"hooks": [
|
|
168
214
|
{
|
|
169
215
|
"type": "command",
|
|
170
|
-
"command": "$CLAUDE_PROJECT_DIR/.claude/hooks/
|
|
171
|
-
|
|
216
|
+
"command": "$CLAUDE_PROJECT_DIR/.claude/hooks/notify-ntfy.sh"
|
|
217
|
+
},
|
|
218
|
+
{
|
|
219
|
+
"type": "command",
|
|
220
|
+
"command": "command -v entire >/dev/null 2>&1 && entire hooks claude-code stop || true"
|
|
172
221
|
}
|
|
173
222
|
]
|
|
174
|
-
}
|
|
175
|
-
],
|
|
176
|
-
"SubagentStop": [
|
|
223
|
+
},
|
|
177
224
|
{
|
|
178
225
|
"matcher": "",
|
|
179
226
|
"hooks": [
|
|
180
227
|
{
|
|
181
228
|
"type": "command",
|
|
182
|
-
"command": "$CLAUDE_PROJECT_DIR/.claude/hooks/debug-hook.sh"
|
|
183
|
-
"timeout": 5
|
|
229
|
+
"command": "$CLAUDE_PROJECT_DIR/.claude/hooks/debug-hook.sh"
|
|
184
230
|
}
|
|
185
231
|
]
|
|
186
232
|
}
|
|
187
233
|
],
|
|
188
|
-
"
|
|
234
|
+
"SubagentStart": [
|
|
189
235
|
{
|
|
190
|
-
"matcher": "
|
|
236
|
+
"matcher": "",
|
|
191
237
|
"hooks": [
|
|
192
238
|
{
|
|
193
239
|
"type": "command",
|
|
194
|
-
"command": "$CLAUDE_PROJECT_DIR/.claude/hooks/
|
|
240
|
+
"command": "$CLAUDE_PROJECT_DIR/.claude/hooks/debug-hook.sh",
|
|
195
241
|
"timeout": 5
|
|
196
242
|
}
|
|
197
243
|
]
|
|
198
|
-
}
|
|
244
|
+
}
|
|
245
|
+
],
|
|
246
|
+
"SubagentStop": [
|
|
199
247
|
{
|
|
200
248
|
"matcher": "",
|
|
201
249
|
"hooks": [
|
|
@@ -207,14 +255,17 @@
|
|
|
207
255
|
]
|
|
208
256
|
}
|
|
209
257
|
],
|
|
210
|
-
"
|
|
258
|
+
"UserPromptSubmit": [
|
|
211
259
|
{
|
|
212
260
|
"matcher": "",
|
|
213
261
|
"hooks": [
|
|
214
262
|
{
|
|
215
263
|
"type": "command",
|
|
216
|
-
"command": "
|
|
217
|
-
|
|
264
|
+
"command": "echo 'REMINDER: Start your response with \"I'\\''m tired boss\" as required by CLAUDE.md.'"
|
|
265
|
+
},
|
|
266
|
+
{
|
|
267
|
+
"type": "command",
|
|
268
|
+
"command": "command -v entire >/dev/null 2>&1 && entire hooks claude-code user-prompt-submit || true"
|
|
218
269
|
}
|
|
219
270
|
]
|
|
220
271
|
},
|
|
@@ -223,42 +274,25 @@
|
|
|
223
274
|
"hooks": [
|
|
224
275
|
{
|
|
225
276
|
"type": "command",
|
|
226
|
-
"command": "$CLAUDE_PROJECT_DIR/.claude/hooks/
|
|
227
|
-
"timeout": 5
|
|
277
|
+
"command": "$CLAUDE_PROJECT_DIR/.claude/hooks/enforce-plan-rules.sh"
|
|
228
278
|
}
|
|
229
279
|
]
|
|
230
|
-
}
|
|
231
|
-
],
|
|
232
|
-
"PreCompact": [
|
|
280
|
+
},
|
|
233
281
|
{
|
|
234
282
|
"matcher": "",
|
|
235
283
|
"hooks": [
|
|
236
284
|
{
|
|
237
285
|
"type": "command",
|
|
238
|
-
"command": "$CLAUDE_PROJECT_DIR/.claude/hooks/debug-hook.sh"
|
|
239
|
-
"timeout": 5
|
|
286
|
+
"command": "$CLAUDE_PROJECT_DIR/.claude/hooks/debug-hook.sh"
|
|
240
287
|
}
|
|
241
288
|
]
|
|
242
289
|
}
|
|
243
290
|
]
|
|
244
291
|
},
|
|
245
|
-
"
|
|
246
|
-
"
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
"CLAUDE_CODE_EXPERIMENTAL_AGENT_TEAMS": "1"
|
|
250
|
-
},
|
|
251
|
-
"attribution": {
|
|
252
|
-
"commit": "🤖 Generated with Claude Code\n\nCo-Authored-By: Claude",
|
|
253
|
-
"pr": "🤖 Generated with Claude Code"
|
|
292
|
+
"permissions": {
|
|
293
|
+
"deny": [
|
|
294
|
+
"Read(./.entire/metadata/**)"
|
|
295
|
+
]
|
|
254
296
|
},
|
|
255
|
-
"plansDirectory": "./plans"
|
|
256
|
-
|
|
257
|
-
"typescript-lsp@claude-plugins-official": true,
|
|
258
|
-
"safety-net@cc-marketplace": true,
|
|
259
|
-
"code-simplifier@claude-plugins-official": true,
|
|
260
|
-
"code-review@claude-plugins-official": true,
|
|
261
|
-
"playwright@claude-plugins-official": true,
|
|
262
|
-
"coderabbit@claude-plugins-official": true
|
|
263
|
-
}
|
|
264
|
-
}
|
|
297
|
+
"plansDirectory": "./plans"
|
|
298
|
+
}
|