@codyswann/lisa 1.38.0 → 1.39.1
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/all/deletions.json +19 -1
- 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/typescript/deletions.json +2 -1
- 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."
|
package/all/deletions.json
CHANGED
|
@@ -41,6 +41,24 @@
|
|
|
41
41
|
".claude/skills/sonarqube:check",
|
|
42
42
|
".claude/skills/sonarqube:fix",
|
|
43
43
|
".claude/skills/tasks:load",
|
|
44
|
-
".claude/skills/tasks:sync"
|
|
44
|
+
".claude/skills/tasks:sync",
|
|
45
|
+
".claude/REFERENCE.md",
|
|
46
|
+
".claude/commands/plan/implement.md",
|
|
47
|
+
".claude/rules/plan-governance.md",
|
|
48
|
+
".claude/rules/plan.md",
|
|
49
|
+
".claude/skills/plan-create",
|
|
50
|
+
".claude/skills/plan-implement",
|
|
51
|
+
".claude/agents/architecture-planner.md",
|
|
52
|
+
".claude/agents/codebase-analyzer.md",
|
|
53
|
+
".claude/agents/codebase-locator.md",
|
|
54
|
+
".claude/agents/codebase-pattern-finder.md",
|
|
55
|
+
".claude/agents/consistency-checker.md",
|
|
56
|
+
".claude/agents/product-planner.md",
|
|
57
|
+
".claude/agents/product-reviewer.md",
|
|
58
|
+
".claude/agents/security-planner.md",
|
|
59
|
+
".claude/agents/spec-analyst.md",
|
|
60
|
+
".claude/agents/tech-reviewer.md",
|
|
61
|
+
".claude/agents/test-coverage-agent.md",
|
|
62
|
+
".claude/agents/test-strategist.md"
|
|
45
63
|
]
|
|
46
64
|
}
|
|
@@ -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.1",
|
|
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
|