@codyswann/lisa 1.58.3 → 1.59.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/package.json CHANGED
@@ -72,7 +72,7 @@
72
72
  "axios": ">=1.13.5"
73
73
  },
74
74
  "name": "@codyswann/lisa",
75
- "version": "1.58.3",
75
+ "version": "1.59.0",
76
76
  "description": "Claude Code governance framework that applies guardrails, guidance, and automated enforcement to projects",
77
77
  "main": "dist/index.js",
78
78
  "exports": {
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "lisa",
3
- "version": "1.58.3",
3
+ "version": "1.59.0",
4
4
  "description": "Universal governance — agents, skills, commands, hooks, and rules for all projects",
5
5
  "author": {
6
6
  "name": "Cody Swann"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "lisa-cdk",
3
- "version": "1.58.3",
3
+ "version": "1.59.0",
4
4
  "description": "AWS CDK-specific plugin",
5
5
  "author": {
6
6
  "name": "Cody Swann"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "lisa-expo",
3
- "version": "1.58.3",
3
+ "version": "1.59.0",
4
4
  "description": "Expo/React Native-specific skills, agents, rules, and MCP servers",
5
5
  "author": {
6
6
  "name": "Cody Swann"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "lisa-nestjs",
3
- "version": "1.58.3",
3
+ "version": "1.59.0",
4
4
  "description": "NestJS-specific skills (GraphQL, TypeORM)",
5
5
  "author": {
6
6
  "name": "Cody Swann"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "lisa-rails",
3
- "version": "1.58.3",
3
+ "version": "1.59.0",
4
4
  "description": "Ruby on Rails-specific skills, rules, and conventions",
5
5
  "author": {
6
6
  "name": "Cody Swann"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "lisa-typescript",
3
- "version": "1.58.3",
3
+ "version": "1.59.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"
@@ -5,7 +5,7 @@ name: Claude Nightly Jira Triage
5
5
 
6
6
  on:
7
7
  schedule:
8
- - cron: '0 6 * * 1-5'
8
+ - cron: '0 */2 * * *'
9
9
  workflow_dispatch:
10
10
  inputs:
11
11
  ticket_key:
@@ -233,6 +233,47 @@ Incrementally lowers ESLint code complexity thresholds toward target minimums:
233
233
 
234
234
  Does not modify the `maxLines` threshold. Skips if all metrics are at/below targets. Prevents duplicate PRs.
235
235
 
236
+ ### Claude Nightly Jira Triage (`claude-nightly-jira-triage.yml`)
237
+
238
+ **Triggers**: Cron every 2 hours (all days), manual dispatch
239
+
240
+ **Auto-enables**: When Claude and Jira credentials are configured (`CLAUDE_CODE_OAUTH_TOKEN`, `JIRA_API_TOKEN` secrets and `JIRA_BASE_URL`, `JIRA_USER_EMAIL`, `JIRA_PROJECT_KEY` repository variables). No feature flag needed.
241
+
242
+ Automatically triages untriaged Jira tickets by examining them and posting actionable comments. Supports multi-repo setups where multiple repositories share a single Jira project:
243
+
244
+ 1. Fetches untriaged tickets via JQL using repo-scoped labels (`claude-triaged-<repo-name>`, e.g., `claude-triaged-frontend-v2`). Each repo filters by its own label so every repo triages independently
245
+ 2. **Relevance Gating**: Searches the local codebase for code related to the ticket. If no relevant code is found, adds the repo-scoped label and skips -- no noise posted to the ticket
246
+ 3. **Cross-repo Awareness**: Reads existing comments on the ticket before posting. If another repo already posted triage findings, only adds supplementary findings from this repo's perspective. All comments are prefixed with the repo name (e.g., `*[frontend-v2] Ambiguity detected*`)
247
+ 4. **Ambiguity Detection**: Flags vague language, untestable criteria, undefined terms, and missing scope. Posts a comment per ambiguity with a suggested clarifying question
248
+ 5. **Edge Case Analysis**: Searches the codebase for related files, checks git history, and identifies boundary conditions, error handling gaps, and integration risks. Posts a consolidated comment referencing only files in this repo
249
+ 6. **Verification Methodology**: For each acceptance criterion, specifies a concrete verification method scoped to what this repo can test (e.g., frontend suggests Playwright tests, backend suggests API curl commands). Posts a structured table comment
250
+ 7. Labels the ticket with the repo-scoped label (`claude-triaged-<repo-name>`) so it is not reprocessed by this repo
251
+
252
+ **Manual dispatch inputs**:
253
+ - `ticket_key`: Triage a specific ticket by key (e.g., `PROJ-123`)
254
+ - `ticket_count`: Number of tickets to process in batch mode (default: 5)
255
+
256
+ This workflow is read-only — it does not modify code or create PRs. It only reads the codebase and posts Jira comments.
257
+
258
+ **How to activate**:
259
+
260
+ 1. Add the secrets in **Settings** > **Secrets and variables** > **Actions** > **Secrets**:
261
+
262
+ | Secret | Description | How to get |
263
+ |--------|-------------|------------|
264
+ | `CLAUDE_CODE_OAUTH_TOKEN` | OAuth token for Claude Code | See `CLAUDE_CODE_OAUTH_TOKEN` in the Core Secrets section below |
265
+ | `JIRA_API_TOKEN` | API token from Atlassian | [Create API token](https://id.atlassian.com/manage-profile/security/api-tokens) |
266
+
267
+ 2. Add repository variables in **Settings** > **Secrets and variables** > **Actions** > **Variables**:
268
+
269
+ | Variable | Description | Example |
270
+ |----------|-------------|---------|
271
+ | `JIRA_BASE_URL` | Jira instance base URL | `https://company.atlassian.net` |
272
+ | `JIRA_USER_EMAIL` | Email associated with the API token | `user@company.com` |
273
+ | `JIRA_PROJECT_KEY` | Jira project key for ticket queries | `PROJ` |
274
+
275
+ 3. The workflow auto-enables once all three variables and both secrets are set. No feature flag needed.
276
+
236
277
  ### Auto-update PR Branches (`auto-update-pr-branches.yml`)
237
278
 
238
279
  **Triggers**: Push to `main`, `staging`, or `dev`
@@ -457,8 +498,6 @@ gpg --export-secret-keys YOUR_KEY_ID | base64 > signing-key.txt
457
498
  | Secret | Description |
458
499
  |--------|-------------|
459
500
  | `JIRA_API_TOKEN` | API token from Atlassian |
460
- | `JIRA_BASE_URL` | Your Jira instance URL (e.g., `https://company.atlassian.net`) |
461
- | `JIRA_USER_EMAIL` | Email associated with the API token |
462
501
  | `JIRA_AUTOMATION_WEBHOOK` | Webhook URL for Jira automation |
463
502
 
464
503
  **How to get JIRA_API_TOKEN**:
@@ -474,6 +513,9 @@ Variables are non-sensitive configuration values. Set them in **Settings** > **S
474
513
  |----------|-------------|---------|
475
514
  | `ENABLE_CLAUDE_NIGHTLY` | Enable nightly Claude workflows | `true` |
476
515
  | `ENABLE_CLAUDE_CODE_REVIEW_RESPONSE` | Enable Claude response to CodeRabbit reviews | `true` |
516
+ | `JIRA_BASE_URL` | Jira instance base URL (enables Jira triage workflow) | `https://company.atlassian.net` |
517
+ | `JIRA_USER_EMAIL` | Email associated with the Jira API token | `user@company.com` |
518
+ | `JIRA_PROJECT_KEY` | Jira project key for ticket queries | `PROJ` |
477
519
  | `SENTRY_ORG` | Sentry organization slug | `my-company` |
478
520
  | `SENTRY_PROJECT` | Sentry project slug | `frontend-app` |
479
521
 
@@ -5,7 +5,7 @@ name: Claude Nightly Jira Triage
5
5
 
6
6
  on:
7
7
  schedule:
8
- - cron: '0 6 * * 1-5'
8
+ - cron: '0 */2 * * *'
9
9
  workflow_dispatch:
10
10
  inputs:
11
11
  ticket_key: