@mmerterden/multi-agent-pipeline 20.6.0 → 20.7.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.
Files changed (69) hide show
  1. package/CHANGELOG.md +18 -0
  2. package/docs/facts.json +1 -1
  3. package/manifest.json +71 -71
  4. package/package.json +1 -1
  5. package/pipeline/multi-agent-refs/features/design-conformance.md +62 -64
  6. package/pipeline/scripts/_notices.mjs +11 -0
  7. package/pipeline/scripts/gen-skills-index.mjs +1 -1
  8. package/pipeline/skills/.skill-manifest.json +39 -39
  9. package/pipeline/skills/shared/README.md +1 -1
  10. package/pipeline/skills/shared/external/agent-introspection-debugging/SKILL.md +1 -0
  11. package/pipeline/skills/shared/external/android-architecture/SKILL.md +2 -0
  12. package/pipeline/skills/shared/external/android-performance/SKILL.md +2 -0
  13. package/pipeline/skills/shared/external/android-security/SKILL.md +2 -0
  14. package/pipeline/skills/shared/external/backlog/BACKLOG.md +1 -1
  15. package/pipeline/skills/shared/external/backlog/SKILL.md +56 -33
  16. package/pipeline/skills/shared/external/ci-cd-pipelines/SKILL.md +1 -0
  17. package/pipeline/skills/shared/external/compose-components/SKILL.md +2 -0
  18. package/pipeline/skills/shared/external/compose-navigation/SKILL.md +3 -2
  19. package/pipeline/skills/shared/external/compose-testing/SKILL.md +2 -0
  20. package/pipeline/skills/shared/external/council/SKILL.md +1 -0
  21. package/pipeline/skills/shared/external/css-modern/SKILL.md +1 -0
  22. package/pipeline/skills/shared/external/database-patterns/SKILL.md +1 -0
  23. package/pipeline/skills/shared/external/evidence-github/SKILL.md +2 -0
  24. package/pipeline/skills/shared/external/evidence-registry/SKILL.md +2 -0
  25. package/pipeline/skills/shared/external/gradle-kotlin-dsl/SKILL.md +2 -0
  26. package/pipeline/skills/shared/external/html-semantic/SKILL.md +1 -0
  27. package/pipeline/skills/shared/external/humanizer/SKILL.md +1 -0
  28. package/pipeline/skills/shared/external/ios-coding-standard/SKILL.md +1 -0
  29. package/pipeline/skills/shared/external/ios-module-structure/SKILL.md +1 -0
  30. package/pipeline/skills/shared/external/ios-security/SKILL.md +2 -0
  31. package/pipeline/skills/shared/external/localization-reuse-map/SKILL.md +91 -283
  32. package/pipeline/skills/shared/external/localization-reuse-map/reference/format-and-output.md +119 -151
  33. package/pipeline/skills/shared/external/localization-reuse-map/reference/publish-and-snapshot.md +60 -90
  34. package/pipeline/skills/shared/external/localization-reuse-map/reference/sources-and-recipes.md +119 -156
  35. package/pipeline/skills/shared/external/localization-reuse-map/scripts/build-artifact.py +726 -787
  36. package/pipeline/skills/shared/external/localization-reuse-map/scripts/build-spreadsheet.py +253 -288
  37. package/pipeline/skills/shared/external/localization-reuse-map/scripts/fetch-annotations.py +243 -304
  38. package/pipeline/skills/shared/external/localization-reuse-map/scripts/fetch-legacy-labels.py +88 -104
  39. package/pipeline/skills/shared/external/localization-reuse-map/scripts/publish-confluence.py +181 -235
  40. package/pipeline/skills/shared/external/localization-reuse-map/scripts/render-key-shots.py +198 -263
  41. package/pipeline/skills/shared/external/localization-reuse-map/scripts/render-overlay.py +461 -466
  42. package/pipeline/skills/shared/external/localization-reuse-map/scripts/resolve-legacy-values.py +145 -151
  43. package/pipeline/skills/shared/external/localization-reuse-map/scripts/resolve-new-values.py +123 -141
  44. package/pipeline/skills/shared/external/localization-reuse-map/scripts/scan-screen-keys.py +146 -157
  45. package/pipeline/skills/shared/external/localization-reuse-map/scripts/snapshot-resources.sh +22 -19
  46. package/pipeline/skills/shared/external/localization-reuse-map/scripts/verify-map.py +156 -140
  47. package/pipeline/skills/shared/external/nextjs-app-router/SKILL.md +1 -0
  48. package/pipeline/skills/shared/external/play-store-review/SKILL.md +2 -0
  49. package/pipeline/skills/shared/external/python-patterns/SKILL.md +1 -0
  50. package/pipeline/skills/shared/external/react-best-practices/SKILL.md +1 -0
  51. package/pipeline/skills/shared/external/rest-api-design/SKILL.md +1 -0
  52. package/pipeline/skills/shared/external/retrofit-networking/SKILL.md +2 -0
  53. package/pipeline/skills/shared/external/room-database/SKILL.md +2 -0
  54. package/pipeline/skills/shared/external/search-first/SKILL.md +1 -0
  55. package/pipeline/skills/shared/external/signal-community/SKILL.md +2 -0
  56. package/pipeline/skills/shared/external/skill-creator/SKILL.md +80 -41
  57. package/pipeline/skills/shared/external/skill-creator/audit.md +63 -59
  58. package/pipeline/skills/shared/external/skill-creator/checklist.md +28 -20
  59. package/pipeline/skills/shared/external/skill-creator/examples.md +40 -40
  60. package/pipeline/skills/shared/external/skill-creator/label-check.md +48 -36
  61. package/pipeline/skills/shared/external/skill-creator/scripts/audit-panel.js +91 -100
  62. package/pipeline/skills/shared/external/skill-creator/template.md +51 -39
  63. package/pipeline/skills/shared/external/tailwind-css/SKILL.md +1 -0
  64. package/pipeline/skills/shared/external/testing-backend/SKILL.md +1 -0
  65. package/pipeline/skills/shared/external/typescript-patterns/SKILL.md +1 -0
  66. package/pipeline/skills/shared/external/vue-composition/SKILL.md +1 -0
  67. package/pipeline/skills/shared/external/web-accessibility/SKILL.md +1 -0
  68. package/pipeline/skills/shared/external/web-performance/SKILL.md +1 -0
  69. package/pipeline/skills/shared/external/web-testing/SKILL.md +1 -0
@@ -1,6 +1,8 @@
1
1
  ---
2
2
  name: android-security
3
3
  description: "Secure Android apps with ProGuard/R8 obfuscation, OkHttp certificate pinning, BiometricPrompt authentication, EncryptedSharedPreferences, Play Integrity API, root detection, secure network communication, and API key protection via local.properties and BuildConfig. Use when implementing security features, auditing app security, handling sensitive data, or preparing for production release."
4
+ metadata:
5
+ source: multi-agent-pipeline
4
6
  ---
5
7
 
6
8
  # Android Security
@@ -1,6 +1,6 @@
1
1
  # Backlog
2
2
 
3
- Deferred-but-approved work, kept whole. Entries move `deferred` -> `ready` -> `in-progress` -> `done` and are never deleted. The full spec travels verbatim from when the job was deferred.
3
+ Deferred-but-approved work, kept whole. Entries move `deferred` -> `ready` -> `in-progress` -> `done`. An entry leaves only when a re-audit finds its subject gone, or when it is done and its lesson lives in the skill or doc that owns that area. The full spec travels verbatim from when the job was deferred.
4
4
 
5
5
  ## Ready
6
6
 
@@ -1,54 +1,77 @@
1
1
  ---
2
2
  name: backlog
3
- description: "The engineering backlog registry for deferred-but-approved work: each deferred job lands here with its spec, origin and unblock condition. Use when the user says 'defer it', 'add it to the list', 'later' or 'not now', asks what is on the backlog, says 'pick up {id}', or completes an item. BACKLOG.md is the registry; entries move deferred, ready, in-progress, done, and a re-audit deletes rotted ones."
3
+ description: "Registry and routine for approved but postponed engineering work: each item keeps its full spec, origin and unblock condition, and moves through deferred, ready, in-progress and done. Use when the user postpones work ('later', 'not now', 'put it on the list', 'backlog this'), asks what is on the backlog or still owed, works the backlog, picks up an item by id or the next one, finishes an item, or when a rename, a deleted subject or a doubted claim calls for a re-audit. Not for Jira or GitHub tickets, and never for summarising or rewriting a deferred spec."
4
4
  user-invocable: true
5
5
  argument-hint: [list | add | pick <id> | done <id> | re-audit]
6
6
  allowed-tools: Read, Grep, Glob, Edit, Write
7
7
  metadata:
8
8
  version: 1.0.0
9
+ source: multi-agent-pipeline
9
10
  ---
10
11
 
11
- # backlog - deferred work, kept whole
12
+ # backlog - postponed work without context loss
12
13
 
13
- > **Layer:** workflow - the deterministic registry routine for deferred jobs.
14
- > **Bundled:** [BACKLOG.md](BACKLOG.md) - the registry. The heart of this skill.
15
- > **Iron rule:** moving a job onto this list is a MOVE, never a rewrite - the FULL spec
16
- > travels verbatim. A compressed one-liner is a loss; the point of the backlog is that
17
- > deferring costs nothing later. The registry stays honest in the other direction too:
18
- > entries are re-audited against live code, and an entry whose named types or premises
19
- > no longer exist is DELETED, never left readable as live.
14
+ > **Layer:** workflow in practice: a fixed routine over one registry file.
15
+ > **Registry:** [BACKLOG.md](BACKLOG.md), bundled with this skill. Every operation below reads or edits it.
20
16
 
21
- ## When to load
17
+ ## Why it exists
18
+ Work that gets postponed as a single line tends to die there. By the time someone returns to it, the reasoning, the constraints and the edge cases are gone, and the job is either re-derived from scratch or quietly dropped. This registry pays the cost of "later" once, at the moment of deferral, by storing the job exactly as it was understood then.
22
19
 
23
- - The user defers work: "defer it", "add it to the list", "later", "not now", "backlog this".
24
- - The user asks about it: "what's on the backlog", "what's on the list", "what's owed".
25
- - The user works it: "work the backlog", "pick up <id>", "do the next one".
26
- - An item completes: mark it done, and retire the record once what it taught has a home.
27
- - A staleness signal arrives (a rename, a deleted subject, a doubted claim): re-audit.
20
+ ## Two rules
21
+ 1. **Deferral moves the spec; it does not edit it.** The full description goes into the entry word for word. Shortening it to one line is data loss, even when the line reads well.
22
+ 2. **The registry must stay true.** Entries are checked against the live code. One whose named types, files or premises have disappeared is deleted, not kept around looking actionable.
28
23
 
29
- ## The registry contract
24
+ ## Entry fields
25
+ | Field | Content |
26
+ |---|---|
27
+ | `id` | short, stable kebab-case slug, assigned when the entry is added and never changed |
28
+ | `title` | one line |
29
+ | `state` | `deferred`, `ready`, `in-progress` or `done` |
30
+ | `origin` | the task, PR, review finding or conversation that produced the job |
31
+ | `spec` | the complete description, verbatim, as a block literal; never a summary |
32
+ | `unblock` | the dependency, decision or date that makes it actionable |
33
+
34
+ The file layout (sections Ready, Deferred, In progress, Done, and the entry template) is fixed in `BACKLOG.md`: each item is a heading with its id and title, followed by bullets for state, origin, unblock and spec.
30
35
 
31
- Every entry in `BACKLOG.md` carries, verbatim:
36
+ ## State machine
37
+ `deferred` -> `ready` -> `in-progress` -> `done`. States only move forward.
32
38
 
33
- - **id** - short stable slug (`kebab-case`), assigned on add.
34
- - **title** - one line.
35
- - **state** - `deferred` -> `ready` -> `in-progress` -> `done`. Entries move forward; they leave the registry only by the two rules below (rot, or a re-homed done record), never by being quietly rewritten.
36
- - **origin** - where it came from (the task/PR/finding/conversation that spawned it).
37
- - **spec** - the FULL description, verbatim from when it was deferred. Not a summary.
38
- - **unblock** - the condition that makes it actionable (a dependency, a decision, a date). `deferred` items without an unblock condition are just `ready`.
39
+ An entry marked `deferred` with no unblock condition is not waiting for anything, so it is `ready`.
39
40
 
40
- Prefer an append-only markdown table or section list in `BACKLOG.md`; never overwrite an entry's spec on a state change - only its `state` line moves.
41
+ Storage is append-only in spirit: when the state changes, only the state line (and the section the entry sits under) changes. The spec is never overwritten.
41
42
 
42
43
  ## Operations
43
44
 
44
- | Command | Action |
45
- |---|---|
46
- | `list` | Show entries grouped by state (ready first, then deferred, then in-progress; done collapsed). |
47
- | `add` | Capture the deferred job with its full spec + origin + unblock condition. Assign an id. |
48
- | `pick <id>` | Move `ready`/`deferred` -> `in-progress`; surface the full spec so work resumes with zero context loss. |
49
- | `done <id>` | Move -> `done` with the evidence (PR/commit + date). The record RETIRES from the registry once what it taught is written into the skill or doc that owns it - git history is the archive of what was owed and delivered. A done entry kept past that point is a second place for the same truth to rot. |
50
- | `re-audit` | Verify every entry's named types, paths and claims against LIVE code (binary-safe: `LC_ALL=C grep -a`, so a repo with binary blobs does not silently return nothing). A subject that no longer exists deletes its entry; a changed fact restates it. **Numbers move by measurement, never by edit** - a count adjusted to match an impression reads as evidence and is worse than no count. |
45
+ ### `list`
46
+ Group entries by state in the order ready, deferred, in-progress. Show done entries collapsed, as a count or a one-line list of ids.
47
+
48
+ ### `add`
49
+ Take the complete spec as it stands, the origin and the unblock condition. Derive an id. Write the entry under the section that matches its state (`ready` when nothing blocks it).
50
+
51
+ ### `pick <id>`
52
+ Find the entry, which must be `ready` or `deferred`. Change its state to `in-progress`, move it to that section, and print the full spec so the work can resume with nothing to reconstruct.
53
+
54
+ ### `done <id>`
55
+ Set the state to `done` and record the evidence: the PR or commit, and the date. The record is temporary. Once the lesson it carries has been written into the skill or document that owns that area, delete the entry: git history keeps the original, and a done entry left in place becomes a second copy of the truth that drifts from the real one.
56
+
57
+ ### `re-audit`
58
+ For each entry, check every type, path and factual claim it names against the live repository. Use a binary-safe search so repos that contain binary blobs do not make grep silently skip files:
59
+
60
+ ```bash
61
+ LC_ALL=C grep -rIa --line-number '<TypeOrPath>' .
62
+ ```
63
+
64
+ (`LC_ALL=C` avoids locale decoding failures; `-a` treats every file as text.) Then:
65
+ - subject gone: delete the entry;
66
+ - a fact changed: restate that fact in the entry;
67
+ - a number in the entry: measure it again and write the measured value.
68
+
69
+ ## Leaving the registry
70
+ An entry is removed for exactly two reasons: its subject rotted away (found by re-audit), or it is done and its lesson now lives in the owning skill or doc. Nothing leaves by being rewritten until it no longer says what it said.
51
71
 
52
- ## Why keep it whole
72
+ ## Numbers
73
+ A count in an entry changes only when it is measured again. Editing a number to match an impression makes it look like evidence when it is not.
53
74
 
54
- The failure mode this skill prevents: an agent defers a job with a one-line note, the surrounding context evaporates, and picking it up later means re-deriving the spec (or silently dropping it). Storing the full spec at defer-time makes deferral safe - the cost of "later" is paid once, up front, not lost.
75
+ ## Not for
76
+ - Work items that belong in the team's issue tracker (Jira, GitHub issues): file them there.
77
+ - Condensing, paraphrasing or "cleaning up" a deferred spec.
@@ -2,6 +2,7 @@
2
2
  name: ci-cd-pipelines
3
3
  description: "CI/CD pipelines: GitHub Actions workflows, Docker multi-stage builds, environment management, secret management, deployment strategies. Use when setting up or fixing a build, test or deploy pipeline."
4
4
  metadata:
5
+ source: multi-agent-pipeline
5
6
  tags: [ci-cd, github-actions, docker, deployment, devops, backend]
6
7
  version: "2025.1"
7
8
  ---
@@ -1,6 +1,8 @@
1
1
  ---
2
2
  name: compose-components
3
3
  description: "Build Material 3 UI components and custom composables with Jetpack Compose. Covers TopAppBar, Scaffold, BottomSheet, SnackbarHost, slot-based API patterns, MaterialTheme customization, dynamic color, custom color schemes, shape/typography/color token mapping, and modifier ordering best practices. Use when building Compose UI, creating custom components, setting up theming, or reviewing Compose code."
4
+ metadata:
5
+ source: multi-agent-pipeline
4
6
  ---
5
7
 
6
8
  # Jetpack Compose Components
@@ -1,6 +1,8 @@
1
1
  ---
2
2
  name: compose-navigation
3
3
  description: "Implement type-safe navigation in Jetpack Compose using Navigation 2.8+ with @Serializable routes, NavHost, typed composable routes, nested navigation graphs, deep links, BackHandler, type-safe argument passing, and bottom navigation with NavigationBar integration. Use when building Compose navigation, adding new screens, handling deep links, or implementing bottom nav patterns."
4
+ metadata:
5
+ source: multi-agent-pipeline
4
6
  ---
5
7
 
6
8
  # Compose Navigation
@@ -487,7 +489,7 @@ fun EditScreen(
487
489
 
488
490
  ## Review Checklist
489
491
 
490
- - [ ] All routes are `@Serializable` data classes or objects
492
+ - [ ] All routes are `@Serializable` data classes or objects, and the kotlinx-serialization plugin is applied in build.gradle.kts
491
493
  - [ ] `NavController` stays at NavHost level; screens receive navigation lambdas
492
494
  - [ ] Route arguments are primitives or enums only
493
495
  - [ ] Bottom navigation uses `saveState`/`restoreState`/`launchSingleTop`
@@ -496,4 +498,3 @@ fun EditScreen(
496
498
  - [ ] Predictive back is enabled in manifest for Android 14+
497
499
  - [ ] Nested graphs use `navigation<>()` with explicit start destination
498
500
  - [ ] No navigation calls inside composable body without guard
499
- - [ ] kotlinx-serialization plugin is applied in build.gradle.kts
@@ -1,6 +1,8 @@
1
1
  ---
2
2
  name: compose-testing
3
3
  description: "Test Jetpack Compose UI with createComposeRule, semantic matchers (onNodeWithText, onNodeWithTag, onNodeWithContentDescription), actions (performClick, performTextInput, performScrollTo), assertions (assertIsDisplayed, assertExists, assertTextEquals), screenshot testing with Roborazzi or Paparazzi, ViewModel testing with Turbine, TestDispatcher, and runTest patterns. Use when writing Compose UI tests, ViewModel tests, or screenshot tests."
4
+ metadata:
5
+ source: multi-agent-pipeline
4
6
  ---
5
7
 
6
8
  # Compose Testing
@@ -7,6 +7,7 @@ description: |
7
7
  Triggers on: "should we X or Y", "second opinion", "is this worth it",
8
8
  "ship now or wait", requests for dissent or multiple perspectives.
9
9
  metadata:
10
+ source: multi-agent-pipeline
10
11
  version: 1.0.0
11
12
  ---
12
13
 
@@ -2,6 +2,7 @@
2
2
  name: css-modern
3
3
  description: "Modern CSS: container queries, nesting, @layer, Grid/Flexbox patterns, custom properties, animations, and transitions. Use when writing or reviewing modern CSS: layout, container queries, custom properties, animation."
4
4
  metadata:
5
+ source: multi-agent-pipeline
5
6
  tags: [css, grid, flexbox, container-queries, nesting, animations, frontend]
6
7
  version: "2025.1"
7
8
  ---
@@ -2,6 +2,7 @@
2
2
  name: database-patterns
3
3
  description: "Database patterns: SQL best practices (PostgreSQL), indexing, query optimization, migrations, schema design, ORMs (SQLAlchemy, Prisma, Drizzle). Use when designing a schema, writing migrations, or a query needs optimising."
4
4
  metadata:
5
+ source: multi-agent-pipeline
5
6
  tags: [database, sql, postgresql, prisma, drizzle, sqlalchemy, backend]
6
7
  version: "2025.1"
7
8
  ---
@@ -1,6 +1,8 @@
1
1
  ---
2
2
  name: evidence-github
3
3
  description: Search GitHub for facts an analysis can cite - a known issue in a dependency, the PR that fixed it, what a release actually changed, prior art for a pattern. Use when a spec, review or triage needs to know whether a problem is already known upstream.
4
+ metadata:
5
+ source: multi-agent-pipeline
4
6
  ---
5
7
 
6
8
  # GitHub as evidence
@@ -1,6 +1,8 @@
1
1
  ---
2
2
  name: evidence-registry
3
3
  description: Check a package's real version, deprecation status and release notes on npm, PyPI, Maven Central or Swift Package Index. Use when a spec or review depends on what a dependency currently is rather than what a lockfile said months ago. Keyless HTTP, works on every platform.
4
+ metadata:
5
+ source: multi-agent-pipeline
4
6
  ---
5
7
 
6
8
  # Package registries as evidence
@@ -1,6 +1,8 @@
1
1
  ---
2
2
  name: gradle-kotlin-dsl
3
3
  description: "Configure Android builds with Gradle Kotlin DSL, version catalogs (libs.versions.toml), convention plugins (build-logic module), common configurations for android library/compose/testing, build variants, flavors, signing configs, R8/ProGuard rules, and build performance optimization including configuration cache and parallel execution. Use when setting up Gradle builds, adding dependencies, creating convention plugins, or optimizing build times."
4
+ metadata:
5
+ source: multi-agent-pipeline
4
6
  ---
5
7
 
6
8
  # Gradle Kotlin DSL
@@ -2,6 +2,7 @@
2
2
  name: html-semantic
3
3
  description: "Semantic HTML5: elements, forms with validation and accessibility, SEO best practices, structured data, Open Graph, Twitter Cards. Use when writing or reviewing markup, forms or document structure for semantics, accessibility and SEO."
4
4
  metadata:
5
+ source: multi-agent-pipeline
5
6
  tags: [html, semantic, seo, forms, open-graph, structured-data, frontend]
6
7
  version: "2025.1"
7
8
  ---
@@ -6,6 +6,7 @@ description: |
6
6
  mechanical structure, and sycophantic tone. Use when editing text, writing
7
7
  documentation, commit messages, PR descriptions, or any user-facing content.
8
8
  metadata:
9
+ source: multi-agent-pipeline
9
10
  version: 1.2.0
10
11
  ---
11
12
 
@@ -3,6 +3,7 @@ name: ios-coding-standard
3
3
  description: "The iOS coding-standard rule registry: 99 stable-ID rules across readability, security, service layer, business rules, concurrency, testing, module boundaries, naming and visibility, each with a severity and enforcement kind. Use when writing or reviewing Swift and you need the project rule rather than an opinion, or on a persistence, logging or business-rule-placement question."
4
4
  user-invocable: true
5
5
  metadata:
6
+ source: multi-agent-pipeline
6
7
  standards-registry: references/rules.yml
7
8
  ---
8
9
 
@@ -3,6 +3,7 @@ name: ios-module-structure
3
3
  description: "The ios-module-structure rule registry: stable-ID rules over where a declaration lives, what its file is called and what its folder must contain beside it, plus a checker that runs them against one module. Use when auditing or refactoring a module's tree, or when a review wants a rule ID rather than a preference about layout."
4
4
  user-invocable: true
5
5
  metadata:
6
+ source: multi-agent-pipeline
6
7
  standards-registry: references/rules.yml
7
8
  ---
8
9
 
@@ -1,6 +1,8 @@
1
1
  ---
2
2
  name: ios-security
3
3
  description: "Secure iOS apps with Keychain Services, CryptoKit encryption, biometric authentication (Face ID, Touch ID), Secure Enclave key storage, LAContext, App Transport Security (ATS), certificate pinning, data protection classes, and secure coding patterns. Use when implementing app security features, auditing privacy manifests, configuring App Transport Security, securing keychain access, adding biometric authentication, or encrypting sensitive data with CryptoKit."
4
+ metadata:
5
+ source: multi-agent-pipeline
4
6
  ---
5
7
 
6
8
  # iOS Security