@1aboveio/skills 1.0.13 → 1.0.14

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 (94) hide show
  1. package/.codex-plugin/plugin.json +1 -1
  2. package/.codex-plugin/resources.json +145 -142
  3. package/README.md +1 -1
  4. package/package.json +5 -5
  5. package/skills/app-dev/airflow/SKILL.md +1 -1
  6. package/skills/app-dev/android-development/SKILL.md +126 -0
  7. package/skills/app-dev/android-development/references/android-conventions.md +117 -0
  8. package/skills/app-dev/{android-foundation → android-development}/references/ci.md +10 -6
  9. package/skills/app-dev/{android-foundation → android-development}/references/diagnosis.md +39 -15
  10. package/skills/app-dev/android-development/references/feature-work.md +171 -0
  11. package/skills/app-dev/android-development/references/framework-choice.md +88 -0
  12. package/skills/app-dev/{android-foundation → android-development}/references/gotchas.md +43 -6
  13. package/skills/app-dev/android-development/references/init.md +104 -0
  14. package/skills/app-dev/android-development/references/setup.md +389 -0
  15. package/skills/app-dev/android-development/references/workspace.md +156 -0
  16. package/skills/app-dev/android-development/scripts/init.mjs +380 -0
  17. package/skills/app-dev/app-debug/SKILL.md +1 -1
  18. package/skills/app-dev/better-auth/SKILL.md +1 -1
  19. package/skills/app-dev/data-catalog/SKILL.md +1 -1
  20. package/skills/app-dev/data-quality/SKILL.md +1 -1
  21. package/skills/app-dev/ios-foundation/SKILL.md +2 -2
  22. package/skills/app-dev/monorepo/SKILL.md +1 -1
  23. package/skills/app-dev/nextjs-fullstack/SKILL.md +1 -1
  24. package/skills/app-dev/prisma-setup/SKILL.md +1 -1
  25. package/skills/app-dev/pyspark/SKILL.md +1 -1
  26. package/skills/app-dev/python-backend/SKILL.md +1 -1
  27. package/skills/app-dev/shadcn/SKILL.md +1 -1
  28. package/skills/app-dev/zod-v4/SKILL.md +1 -1
  29. package/skills/cicd/cloud-build/SKILL.md +1 -1
  30. package/skills/cicd/cloud-debug/SKILL.md +1 -1
  31. package/skills/cicd/cloud-deploy/SKILL.md +1 -1
  32. package/skills/cicd/docker/SKILL.md +1 -1
  33. package/skills/cicd/github-actions/SKILL.md +1 -1
  34. package/skills/cicd/github-flow/SKILL.md +1 -1
  35. package/skills/cicd/google-cloud/SKILL.md +1 -1
  36. package/skills/cicd/mergify/SKILL.md +1 -1
  37. package/skills/cicd/podman/SKILL.md +1 -1
  38. package/skills/content/article-review/SKILL.md +1 -1
  39. package/skills/content/article-to-image/SKILL.md +1 -1
  40. package/skills/content/flowchart-svg/SKILL.md +1 -1
  41. package/skills/content/image-gen/SKILL.md +1 -1
  42. package/skills/content/mermaid/SKILL.md +1 -1
  43. package/skills/content/wechat-article-writer/SKILL.md +1 -1
  44. package/skills/content/wechat-publisher/SKILL.md +1 -1
  45. package/skills/content/wechat-search/SKILL.md +1 -1
  46. package/skills/content/xai-search/SKILL.md +1 -1
  47. package/skills/core/distill-writing/SKILL.md +1 -1
  48. package/skills/core/doc-to-md/SKILL.md +1 -1
  49. package/skills/core/editorial-review/SKILL.md +1 -1
  50. package/skills/core/house-style/SKILL.md +1 -1
  51. package/skills/core/plain-language/SKILL.md +1 -1
  52. package/skills/core/polish-cn/SKILL.md +1 -1
  53. package/skills/core/reg-parser/SKILL.md +1 -1
  54. package/skills/core/terminology/SKILL.md +1 -1
  55. package/skills/core/write-doc/SKILL.md +1 -1
  56. package/skills/core/write-report/SKILL.md +1 -1
  57. package/skills/engineering/better-review/SKILL.md +1 -1
  58. package/skills/engineering/e2e-test/SKILL.md +1 -1
  59. package/skills/engineering/engineering/SKILL.md +9 -3
  60. package/skills/engineering/engineering/references/init-scope.md +7 -3
  61. package/skills/engineering/engineering/references/scope-management.md +9 -0
  62. package/skills/engineering/engineering/scripts/init.mjs +40 -17
  63. package/skills/engineering/engineering-runtime/SKILL.md +1 -1
  64. package/skills/engineering/engineering-runtime/coherence/workflow.json +13 -13
  65. package/skills/engineering/ensure-coverage/SKILL.md +1 -1
  66. package/skills/engineering/golden-path/SKILL.md +1 -1
  67. package/skills/engineering/harness-runtime/SKILL.md +1 -1
  68. package/skills/engineering/resolve-issues/SKILL.md +1 -1
  69. package/skills/engineering/resolve-issues/references/exploration.md +1 -1
  70. package/skills/engineering/resolve-release/SKILL.md +1 -1
  71. package/skills/engineering/rush-issues/SKILL.md +1 -1
  72. package/skills/engineering/rush-release/SKILL.md +1 -1
  73. package/skills/engineering/test-quality/SKILL.md +1 -1
  74. package/skills/risk-compliance/compliance-audit/SKILL.md +1 -1
  75. package/skills/risk-compliance/contract-compare/SKILL.md +1 -1
  76. package/skills/risk-compliance/contract-review/SKILL.md +1 -1
  77. package/skills/risk-compliance/doc-authenticity/SKILL.md +1 -1
  78. package/skills/risk-compliance/fraud-detection/SKILL.md +1 -1
  79. package/skills/risk-compliance/payment-analysis/SKILL.md +1 -1
  80. package/skills/risk-compliance/portfolio-payment-analysis/SKILL.md +1 -1
  81. package/skills/risk-compliance/similar-domain/SKILL.md +1 -1
  82. package/skills/risk-compliance/tld-detection/SKILL.md +1 -1
  83. package/skills/app-dev/android-foundation/SKILL.md +0 -248
  84. package/skills/app-dev/android-foundation/references/delivery-focus.md +0 -31
  85. package/skills/app-dev/android-foundation/references/feature-work.md +0 -50
  86. package/skills/app-dev/android-foundation/references/setup.md +0 -188
  87. package/skills/app-dev/android-foundation/references/workspace.md +0 -81
  88. /package/skills/app-dev/{android-foundation → android-development}/LICENSE +0 -0
  89. /package/skills/app-dev/{android-foundation → android-development}/assets/android-ci-job.yml +0 -0
  90. /package/skills/app-dev/{android-foundation → android-development}/release-check.mjs +0 -0
  91. /package/skills/app-dev/{android-foundation → android-development}/scripts/device-run.sh +0 -0
  92. /package/skills/app-dev/{android-foundation → android-development}/scripts/workspace-runtime/bin/workspaces.mjs +0 -0
  93. /package/skills/app-dev/{android-foundation → android-development}/scripts/workspace-runtime/native-workspace.mjs +0 -0
  94. /package/skills/app-dev/{android-foundation → android-development}/scripts/workspace-runtime/workspace-lifecycle.mjs +0 -0
@@ -369,7 +369,7 @@
369
369
  "repository": "1aboveio/ai",
370
370
  "revision": "main"
371
371
  },
372
- "contentDigest": "5a7d8e43506d55cf9ea6e4a7c3bc44caf32f384f61b2ac83048760f522ec74c8",
372
+ "contentDigest": "d50381c5d34f05b3c4ac60bd0d1a5a56fdeb7112caf3a58303e2c8d5b9cd73d4",
373
373
  "digestExcludes": []
374
374
  },
375
375
  {
@@ -382,7 +382,7 @@
382
382
  "repository": "1aboveio/ai",
383
383
  "revision": "main"
384
384
  },
385
- "contentDigest": "d60f3b5770b305d86d703aecf9a08f4ed9b1ea428e881c34212529ef8d12d1f4",
385
+ "contentDigest": "7fb81756e33e2582cc02b2a964af1361a474ddae64f1304dfdff680162e5f35e",
386
386
  "digestExcludes": []
387
387
  },
388
388
  {
@@ -395,7 +395,7 @@
395
395
  "repository": "1aboveio/ai",
396
396
  "revision": "main"
397
397
  },
398
- "contentDigest": "a97b8b8e123e4da19f49614540de3dd607f0711eb8b406516ca023d695a3dcfe",
398
+ "contentDigest": "08e07649d8ee91496a4275c9417cd679932d798c91cdbb483ca45979733dd0c3",
399
399
  "digestExcludes": []
400
400
  },
401
401
  {
@@ -408,7 +408,7 @@
408
408
  "repository": "1aboveio/ai",
409
409
  "revision": "main"
410
410
  },
411
- "contentDigest": "a0ac298524bc181d5310ee8f05eb0171a8ab801f68ca18ea55b90b9a8cf54b57",
411
+ "contentDigest": "45e72502bf9d1f707caf2990ba8a9bda7fbda4e748b5f798731a1d0d992b0b02",
412
412
  "digestExcludes": []
413
413
  },
414
414
  {
@@ -421,7 +421,7 @@
421
421
  "repository": "1aboveio/ai",
422
422
  "revision": "main"
423
423
  },
424
- "contentDigest": "3d5b22f5e45edbcca8b88a6802231a830f90b083de6d3fbdc0ceb823ae5971a5",
424
+ "contentDigest": "5cf9c65216eda37ed0acebcaa97be9eea9239fad96397cdd858b4694cae9d906",
425
425
  "digestExcludes": []
426
426
  },
427
427
  {
@@ -434,7 +434,7 @@
434
434
  "repository": "1aboveio/ai",
435
435
  "revision": "main"
436
436
  },
437
- "contentDigest": "e66777d1d522e495078dfdcb506ae815810bf0c8aa648349da4a3bb12566cfdd",
437
+ "contentDigest": "6e1c15f7d61a3bb2af78df82b57674152d9c321cc17b5a83d32379cc0a9104ef",
438
438
  "digestExcludes": []
439
439
  },
440
440
  {
@@ -447,7 +447,7 @@
447
447
  "repository": "1aboveio/ai",
448
448
  "revision": "main"
449
449
  },
450
- "contentDigest": "01d95a93132107140a55a13fceafb0d3993c742e80dd7f367018306d71690b36",
450
+ "contentDigest": "303941d679cacbafc5594a6b8369e016cef3cdf3c065ae919edc8695cbce8a69",
451
451
  "digestExcludes": []
452
452
  },
453
453
  {
@@ -460,7 +460,7 @@
460
460
  "repository": "1aboveio/ai",
461
461
  "revision": "main"
462
462
  },
463
- "contentDigest": "75aebb12f6d3461fe1892bce7b535ec8dcf94b3943aa8c488cf46255654f5e57",
463
+ "contentDigest": "d8de3acaf463033d55e5bedf17b5aeac8e9a1d77267c5960af18bdebbaf18c7d",
464
464
  "digestExcludes": []
465
465
  },
466
466
  {
@@ -473,7 +473,7 @@
473
473
  "repository": "1aboveio/ai",
474
474
  "revision": "main"
475
475
  },
476
- "contentDigest": "c5f4d18c646ece47620c9d778860c96f2f3764caa1ecaff0ef821835b7421aa0",
476
+ "contentDigest": "8b8a149b90292ae4b0c3dd8b34a387ea7fa8c154610c232c8c55ce9781cca03d",
477
477
  "digestExcludes": []
478
478
  },
479
479
  {
@@ -486,7 +486,7 @@
486
486
  "repository": "1aboveio/ai",
487
487
  "revision": "main"
488
488
  },
489
- "contentDigest": "491cfe94839fa027fed6c79631a8dc581f65ef1e1b222a61f76e15863e540e5b",
489
+ "contentDigest": "553b2748b6357b92caa30ee29351add044d10cc6ad28e4cdb809f4f23bb5a9da",
490
490
  "digestExcludes": []
491
491
  },
492
492
  {
@@ -499,7 +499,7 @@
499
499
  "repository": "1aboveio/ai",
500
500
  "revision": "main"
501
501
  },
502
- "contentDigest": "ec5d51ec669aa5ed0693d54ef70efd97a19dd9817accfdb2ca7afe1a711547e7",
502
+ "contentDigest": "65bb8314e2fe1f2ebbdca60f2dcd433af44a8eeba080adf30f0682ef5c0a2acd",
503
503
  "digestExcludes": []
504
504
  },
505
505
  {
@@ -512,13 +512,13 @@
512
512
  "repository": "1aboveio/ai",
513
513
  "revision": "main"
514
514
  },
515
- "contentDigest": "de617480630819345cb53fea3fbd5ca2e9d4d360680a9feace942c518806f59b",
515
+ "contentDigest": "9fb61a9e59fee73ff803113e9d33e47bc19a2ef5ce92c06f63a4d5cca8a72189",
516
516
  "digestExcludes": [
517
517
  "coherence/workflow.json"
518
518
  ]
519
519
  }
520
520
  ],
521
- "releaseIdentity": "4eabbf3d0e0d3af4e9436e1a4e4c07ef153a7cc07d74d42ab94c15717146dfa3",
521
+ "releaseIdentity": "d0f4c3cc3c13714b4d4be17f6b8b1f56aff7fe1901be7c7823f4faba348baeb6",
522
522
  "lifecycleAuthority": "native-skills-cli",
523
523
  "repairRecipe": {
524
524
  "id": "engineering-workflow-dependency-first",
@@ -2,7 +2,7 @@
2
2
  name: ensure-coverage
3
3
  description: "Define or audit behavior-first test criteria — ACs, required test levels, mock/integration/E2E policy — across three axes: breadth (Coverage Ledger), depth (over-mocking), presentation (perceivability of browser surfaces). NOT judging whether a single test is any good (test-quality), authoring browser tests (e2e-test), reviewing a PR (better-review), or delivering issues (resolve-issues)."
4
4
  disable-model-invocation: true
5
- release-version: 0.45.2
5
+ release-version: 0.46.0
6
6
  ---
7
7
  **Updates:** Once/session run `node <skill-base-dir>/release-check.mjs`.
8
8
  # Ensure Coverage
@@ -3,7 +3,7 @@ name: golden-path
3
3
  description: "Golden-path E2E: the short list of user journeys whose failure blocks a release, kept in a repo as one contract (golden-paths.json) with a generated GOLDEN_PATHS.md and a generated GitHub Actions workflow, and run against a local build or a deployed URL for an ALIVE/DEAD verdict. Use to set golden paths up in a repo ('init golden paths', 'add golden-path CI'), to migrate an older smoke.manifest.json or a hand-built smoke setup ('audit', 'migrate smoke'), to add, change, or remove a golden path, to ask 'is the build alive?' or run them before a PR or release, or when a change touches a flow listed in GOLDEN_PATHS.md. NOT for writing the Playwright specs themselves (e2e-test), deciding what a change must prove (ensure-coverage), or general workflow YAML (github-actions)."
4
4
  dependencies:
5
5
  - e2e-test
6
- release-version: 0.45.2
6
+ release-version: 0.46.0
7
7
  ---
8
8
  **Updates:** Once/session run `node <skill-base-dir>/release-check.mjs`.
9
9
  # Golden path
@@ -3,7 +3,7 @@ name: harness-runtime
3
3
  description: Internal import-only library shared by first-party engineering packages. Not a workflow skill; never select or invoke it as a user capability.
4
4
  disable-model-invocation: true
5
5
  user-invocable: false
6
- release-version: 0.45.2
6
+ release-version: 0.46.0
7
7
  ---
8
8
  **Updates:** Once/session run `node <skill-base-dir>/release-check.mjs`.
9
9
  # Harness Runtime
@@ -8,7 +8,7 @@ dependencies:
8
8
  - better-review
9
9
  - golden-path
10
10
  - harness-runtime
11
- release-version: 0.45.2
11
+ release-version: 0.46.0
12
12
  ---
13
13
  **Updates:** Once/session run `node <skill-base-dir>/release-check.mjs`.
14
14
  # Resolve issues
@@ -100,7 +100,7 @@ four are copied.
100
100
  reproduce a failed journey with it before they push a fix; never a CI
101
101
  dispatch (`gh workflow run`, `gh run rerun`). `check` may be one.
102
102
  - `skill` (every suite, present or missing): the absolute `SKILL.md` path of the installed skill for this
103
- kind of journey (an emulator journey: `android-foundation`; a browser
103
+ kind of journey (an emulator journey: `android-development`; a browser
104
104
  one: `e2e-test`), or `null` when none is installed.
105
105
  Example: `check` dispatches the workflow input that runs the Charge
106
106
  journey; `local` runs that Charge journey script on an owned emulator,
@@ -4,7 +4,7 @@ description: "Slash/explicit-only (/resolve-release). Full GitHub Flow release f
4
4
  disable-model-invocation: true
5
5
  metadata:
6
6
  workflow-role: coordinator
7
- release-version: 0.45.2
7
+ release-version: 0.46.0
8
8
  ---
9
9
  **Updates:** Once/session run `node <skill-base-dir>/release-check.mjs`.
10
10
  # Resolve release
@@ -6,7 +6,7 @@ metadata:
6
6
  workflow-role: coordinator
7
7
  dependencies:
8
8
  - resolve-issues
9
- release-version: 0.45.2
9
+ release-version: 0.46.0
10
10
  ---
11
11
  **Updates:** Once/session run `node <skill-base-dir>/release-check.mjs`.
12
12
  # Rush issues (shortcut of resolve-issues)
@@ -6,7 +6,7 @@ metadata:
6
6
  workflow-role: coordinator
7
7
  dependencies:
8
8
  - resolve-release
9
- release-version: 0.45.2
9
+ release-version: 0.46.0
10
10
  ---
11
11
  **Updates:** Once/session run `node <skill-base-dir>/release-check.mjs`.
12
12
  # Rush release (shortcut of resolve-release)
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  name: test-quality
3
3
  description: "Seven principles for tests that catch real bugs, and an audit that reports weak, redundant, and not-coverage tests without fixing them. Use when writing, changing, or reviewing tests, or when asked whether tests are useful, redundant, over-mocked, flaky, only assert static text, or test config files, or asked to make a slow test suite faster without losing coverage, or when the user asks to write the testing conventions into a repo's CONTRIBUTING.md. NOT defining what a spec must prove (ensure-coverage) or authoring browser tests (e2e-test)."
4
- release-version: 0.45.2
4
+ release-version: 0.46.0
5
5
  ---
6
6
  **Updates:** Once/session run `node <skill-base-dir>/release-check.mjs`.
7
7
  # Test Quality
@@ -2,7 +2,7 @@
2
2
  name: compliance-audit
3
3
  version: 2.9.0
4
4
  description: "Audit operations against financial-compliance checklists (AML/KYC, VARS, PCI-DSS, TPA oversight, onboarding, transaction monitoring). Produces tracker.md (with a tracker.xlsx export) and phase-trail.md with layered validation; cites evidence by original filename. Input: reg-parser or the built-in VARS checklist."
5
- release-version: 0.45.2
5
+ release-version: 0.46.0
6
6
  ---
7
7
  **Updates:** Once/session run `node <skill-base-dir>/release-check.mjs`.
8
8
  # Compliance Audit
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  name: contract-compare
3
3
  description: "Compare two or more contracts side-by-side for structured diff, gap analysis, and benchmarking. Use when: comparing contracts or agreements, contract diff, compare terms, vendor-vs-vendor, compare our template vs theirs, compliance gap between contracts. NOT for single-contract risk review — use contract-review for that."
4
- release-version: 0.45.2
4
+ release-version: 0.46.0
5
5
  ---
6
6
  **Updates:** Once/session run `node <skill-base-dir>/release-check.mjs`.
7
7
  # Contract Compare
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  name: contract-review
3
3
  description: "Review contracts for legal, commercial, and compliance risks via convert → chunk review → merge → validate (+ optional mandate preprocessing). Use for reviewing, auditing, or checking any contract, agreement, NDA, MSA, or SLA; input a file path (PDF/DOCX/TXT) or pasted text."
4
- release-version: 0.45.2
4
+ release-version: 0.46.0
5
5
  ---
6
6
  **Updates:** Once/session run `node <skill-base-dir>/release-check.mjs`.
7
7
  # Contract Review
@@ -3,7 +3,7 @@ name: doc-authenticity
3
3
  version: 0.4.1
4
4
  description: "Screen PDF documents and raster images for fabrication, tampering, Photoshop or other image-editor use, and content validity. Detects file type, runs format-specific authenticity forensics, classifies bank statements, conversation logs, invoices, agreements, and other documents, then applies type-specific validity checks. Produces separate authenticity (NO_EVIDENCE_OF_MODIFICATION / SUSPICIOUS / LIKELY_MODIFIED / INCONCLUSIVE) and validity (VALID / INVALID / INCONCLUSIVE) verdicts. Use whenever a user asks whether a document, screenshot, scan, statement, invoice, contract, chat log, receipt, or payment evidence is genuine, original, edited, Photoshopped, manipulated, fake, or valid."
5
5
  disable-model-invocation: true
6
- release-version: 0.45.2
6
+ release-version: 0.46.0
7
7
  ---
8
8
  **Updates:** Once/session run `node <skill-base-dir>/release-check.mjs`.
9
9
  # Document and Image Authenticity
@@ -12,7 +12,7 @@ description: >
12
12
  impact, and a business report. Use for fraud, scam, mule, account-takeover,
13
13
  chargeback, dispute, transfer, collection, or payout risk analysis even when the
14
14
  user does not name this skill.
15
- release-version: 0.45.2
15
+ release-version: 0.46.0
16
16
  ---
17
17
  **Updates:** Once/session run `node <skill-base-dir>/release-check.mjs`.
18
18
  # Fraud Detection
@@ -14,7 +14,7 @@ description: >
14
14
  transactions" — even if they do not say payment-analysis. Do NOT use for
15
15
  fraud rule discovery (fraud-detection) or TLD / MCC-miscoding
16
16
  clusters (tld-detection).
17
- release-version: 0.45.2
17
+ release-version: 0.46.0
18
18
  ---
19
19
  **Updates:** Once/session run `node <skill-base-dir>/release-check.mjs`.
20
20
  # Payment Analysis
@@ -5,7 +5,7 @@ description: >
5
5
  and investigate selected merchants' authorization, settlement and disputes,
6
6
  including descriptor mapping and overlapping exports. Portfolio-level payment
7
7
  overviews belong to payment-analysis; fraud rule discovery belongs to fraud-detection.
8
- release-version: 0.45.2
8
+ release-version: 0.46.0
9
9
  ---
10
10
  **Updates:** Once/session run `node <skill-base-dir>/release-check.mjs`.
11
11
  # Portfolio payment analysis
@@ -8,7 +8,7 @@ description: >
8
8
  links, an entity chain, and a watchlist for the operator's next domains.
9
9
  Not transaction data (tld-detection) or fraud rules (fraud-detection).
10
10
  disable-model-invocation: true
11
- release-version: 0.45.2
11
+ release-version: 0.46.0
12
12
  ---
13
13
  **Updates:** Once/session run `node <skill-base-dir>/release-check.mjs`.
14
14
  # Similar Domain
@@ -6,7 +6,7 @@ description: >
6
6
  patterns, with USD and BIN-country currency views, group profiles and priorities.
7
7
  Not payment-analysis, fraud-detection, or website research.
8
8
  disable-model-invocation: true
9
- release-version: 0.45.2
9
+ release-version: 0.46.0
10
10
  ---
11
11
  **Updates:** Once/session run `node <skill-base-dir>/release-check.mjs`.
12
12
  # TLD detection
@@ -1,248 +0,0 @@
1
- ---
2
- name: android-foundation
3
- description: "Prove and debug Expo / React Native apps on an owned Android emulator. Use for stuck Android debugging, post-deploy startup or rendering failures, Metro answering while the app does not render, UiAutomator failures, missing controls, ADB drops, harness-test failures, APK builds, assigned or fresh SDK/NDK/JDK workspace setup, and native journey validation. Before fixing and rerunning or redispatching a failed Android CI job, reproduce its failing checkpoint off CI: a rerun is not a debugger. Diagnose existing setups without rebuilding the whole environment. NOT for workflow YAML, CI speed or runner design (github-actions), browser tests (e2e-test), iOS (ios-foundation), plain Jest component tests, or signing and store release."
4
- release-version: 0.45.2
5
- ---
6
- **Updates:** Once/session run `node <skill-base-dir>/release-check.mjs`.
7
- # Android foundation
8
-
9
- Prove or debug a native Expo / React Native device journey using the repo's existing
10
- build scripts, native project, harness and wrapper. Use `github-actions` for CI YAML
11
- and runner integration. The CI template is a starting point; preserve existing workflows.
12
-
13
- Pick the mode first:
14
-
15
- - **Diagnosis:** an existing workspace or CI run fails or stalls. Follow
16
- [Diagnosis](#diagnosis) first; a harness change does not automatically require a cold
17
- setup. Re-run only the setup stages whose assumptions changed.
18
- - **Setup proof:** a new workspace or CI job, or a toolchain, dependency or native
19
- change that invalidates setup. Run every stage and write the
20
- [evidence record](#evidence-record).
21
- - **Feature work:** validating a product change in a workspace already set up. Follow
22
- [Feature work](#feature-work): focused checks per candidate, targeted device checks
23
- where needed, and integrated journeys at explicit checkpoints.
24
-
25
- ## Routing
26
-
27
- | Step | Read |
28
- | --- | --- |
29
- | Workspace resolution, then shell snippets for every stage | [references/workspace.md](references/workspace.md), [references/setup.md](references/setup.md) |
30
- | Stages 6–8 in one command | [scripts/device-run.sh](scripts/device-run.sh) |
31
- | Adding the Android job to CI | [references/ci.md](references/ci.md), template [assets/android-ci-job.yml](assets/android-ci-job.yml) |
32
- | Proving a product change on the emulator | [Feature work](#feature-work) |
33
- | A stage failed or a worker appears stuck | [Diagnosis](#diagnosis), then [references/diagnosis.md](references/diagnosis.md) and [Triage](#triage) |
34
- | Writing up setup proof | [Evidence record](#evidence-record) |
35
-
36
- ## Rules
37
-
38
- - Resolve the workspace first; [references/workspace.md](references/workspace.md) owns
39
- precedence: an assigned isolated workspace and candidate HEAD win, feature work, fixes and
40
- diagnosis reuse the owned workspace, and standalone setup creates one managed workspace
41
- only with no usable assignment. Read its actual HEAD; never substitute `origin/main`, a new
42
- branch or another checkout, mutate a peer's checkout or symlink its writable `node_modules`.
43
- - Tool shells keep no variables, functions or traps between calls. Write the environment
44
- to `.cache/android-env.sh` once and source it at the start of every command. Use the
45
- repo's existing owned-resource launcher. For a new local setup without one, use
46
- `scripts/device-run.sh` for stages 6–8 in one command. Do not wrap an existing owner
47
- with a second emulator/database lifecycle.
48
- - Keep local writable caches private under `.cache/`: Gradle home, Android user/AVD
49
- homes, temporary files, npm, node-gyp and pnpm. In CI, an already isolated runner slot
50
- may provide those paths; verify its ownership contract rather than layering another
51
- cache system on top. Never share writable state across concurrent owners.
52
- - Read toolchain versions from the repo: the root `packageManager` and `engines`, the
53
- native Gradle config, and the CI preflight. The repo is the source of truth, not this skill.
54
- - Check that every required SDK component (platform, build-tools, NDK, CMake,
55
- platform-tools, emulator, system image) is already installed. If one is missing, stop and
56
- provision it separately. Never upgrade or install into a shared SDK during a journey;
57
- build with `-Pandroid.builder.sdkDownload=false`.
58
- - Install with `--frozen-lockfile`. Do not routinely run `clean`, reinstall dependencies or
59
- run `expo prebuild`. The native project is tracked, and prebuild needs a reviewed native
60
- change.
61
- - Build every configured ABI for setup proof and release acceptance. An x86_64-only CI
62
- APK only proves the emulator ABI. For feature work, the emulator ABI is enough unless the
63
- change touches native code or ABI configuration.
64
- - Determine how the selected build loads code and assets. A typical debug build needs
65
- Metro; a release build normally embeds its bundle. Do not introduce Metro or debug
66
- preferences into a release failure without evidence that the build uses them.
67
- A successful build does not prove execution on a device.
68
-
69
- ## Stages
70
-
71
- These are the full setup-proof stages, not a per-candidate checklist. For established
72
- workspaces, select checks under [Feature work](#feature-work). Run the selected stages
73
- in dependency order. Stop at the first failure and triage it.
74
-
75
- 1. **Workspace and environment.** Resolve the assigned or standalone workspace
76
- ([references/workspace.md](references/workspace.md)) and export the private cache paths,
77
- `JAVA_HOME` (JDK 17), `ANDROID_HOME` and `ANDROID_SDK_ROOT`. Print the versions of
78
- node, pnpm, java, python3, adb and the emulator. Assert that each SDK component
79
- directory exists. Read the journey wrapper and device harness for the names they expect:
80
- the venv path, the port variables, the database variables and the database-name prefix
81
- the harness accepts.
82
- 2. **Install and check.** Run a frozen install, the app's unit tests, typecheck, and
83
- `expo export --platform android` with a placeholder `EXPO_PUBLIC_API_URL`. Create a
84
- Python venv for UI automation at the path the journey wrapper reads, and pin the
85
- `uiautomator2` version the harness expects.
86
- 3. **Gradle dependencies.** Pick one:
87
- - Seed: `rsync --ignore-existing` only `caches/modules-2/files-2.1/` from a trusted
88
- Gradle home, excluding `*.lock`, `*.lck` and `*.tmp`. Never share writable caches,
89
- metadata, credentials or APKs.
90
- - Proxy: a private Gradle home does not inherit `~/.gradle/init.d`. Install the proxy's
91
- init script into `$GRADLE_USER_HOME/init.d/` and export a route for every repository
92
- the build uses, JitPack included. Ping the proxy first.
93
- - Neither: build against upstream and expect a long cold build.
94
- If the opted-in proxy fails, treat it as an error. Never fall back to direct downloads
95
- and never disable TLS checks. The proxy covers Gradle Maven repositories only. Route the
96
- Gradle wrapper ZIP and pnpm as the repo's CONTRIBUTING says.
97
- 4. **Build.** Run the repo's Android build script with `--max-workers=2
98
- -Dorg.gradle.parallel=false -Pandroid.builder.sdkDownload=false --console=plain
99
- --info`, keeping the log. For setup proof, hash the APK and list its `lib/<abi>/`
100
- entries.
101
- 5. **Owned emulator.** Create a new private AVD in `$ANDROID_AVD_HOME` by copying only
102
- `config.ini` from an installed AVD. Never copy its user data or snapshots. Check that
103
- `image.sysdir.1` points to an installed, host-compatible image, and set `target` to
104
- match it. Writing `config.ini` from scratch needs the hardware keys:
105
- [gotchas](references/gotchas.md#a-hand-written-avd-misses-the-screen). Give the guest
106
- 4 GB: replace any `hw.ramSize` with `hw.ramSize=4096` (`device-run.sh` also passes
107
- `-memory 4096`). At 2 GB, the usual `avdmanager` value, adb drops mid-journey ([gotchas](references/gotchas.md#the-adb-transport-drops-mid-journey)).
108
- 6. **Register cleanup before starting anything.** `device-run.sh` installs the `EXIT`
109
- trap and the `INT`/`TERM` handlers first.
110
- 7. **Start resources.** The script refuses an emulator console port outside 5554–5584
111
- (adb scans only that range) and any busy port, starts the ADB server, then the emulator
112
- (PID recorded) and `postgres` (`--cidfile`, random loopback port), and waits for
113
- `sys.boot_completed=1` and `pg_isready` with a time limit on every command.
114
- 8. **Journey.** The script hands the harness a database named with its accepted prefix and
115
- runs the journey wrapper. Expect every scenario's `PASS` marker, plus screenshots, the
116
- backend log and the Metro log.
117
-
118
- ## Owned-resource cleanup
119
-
120
- - Clean up only what this run started: the emulator child PID, the container ID from the
121
- CID file, and the named database; these are short-lived, unlike the development workspace
122
- and its private caches. Signal the PID with `TERM`, wait up to 10 seconds, then `KILL`.
123
- Then `wait` for it and confirm nothing is left. Count wait status 0 or 143 (ended by your
124
- `TERM`) as a clean stop; count a needed `KILL` or any other status as a failure.
125
- - Never use broad `pkill`, `docker system prune` or a shared `adb kill-server` for cleanup.
126
- Use the live child's process owner, not an ADB serial that may be reused. A numeric
127
- PID can also be reused after exit; it is not durable ownership evidence.
128
- - Give every startup, readiness and cleanup command a 30-second limit that kills the
129
- command's whole process group. Treat exit 124 (timeout) as a terminal failure, not as
130
- "not ready yet".
131
- - Preserve the stage's original non-zero exit status even when cleanup succeeds. Print
132
- `original_stage_exit=<n> cleanup_exit=<n>`.
133
- - After SIGKILL or a host crash, verify recorded resources before recovery: process
134
- start identity, command/run scope and boot identity where available, or container ID
135
- and ownership labels. Never signal a numeric PID solely because an old record names
136
- it. If ownership cannot be verified, leave it alone and report the gap. Keep logs.
137
- - For the local setup flow, point the database URL only at its disposable loopback
138
- container. An existing isolated remote test flow must use its own disposable data and
139
- ownership checks. Never use development, production or another worker's database for
140
- fixture writes or cleanup. A public render-only smoke needs no database.
141
- - Expo may rewrite `android/tsconfig.json` or delete `android/expo-env.d.ts` while it runs.
142
- Inspect those changes and restore them before you commit.
143
-
144
- ## Delivery focus
145
-
146
- Read [references/delivery-focus.md](references/delivery-focus.md) before starting or
147
- continuing work. Keep an existing acceptance checkpoint, reuse available evidence,
148
- justify new infrastructure and carry failure history across workers. Required CI and
149
- the full acceptance criteria still apply; report delivered behavior before activity.
150
-
151
- ## Diagnosis
152
-
153
- Follow the procedure below and [references/diagnosis.md](references/diagnosis.md).
154
- `diagnosing-bugs`, when available, can help with deeper hypothesis testing; it is not
155
- required to use this skill.
156
-
157
- The developer owns technical diagnosis. The coordinator owns its scope and broader
158
- acceptance scheduling. Failures in focused implementation validation stay with the
159
- developer within that task's scope. Failures after review handoff or in broader
160
- acceptance get a separate bounded diagnosis assignment, which may use the same developer:
161
- name the failed checkpoint, retained evidence, next question and return condition.
162
- Return scope growth or inconclusive evidence to the coordinator; do not silently extend
163
- implementation into a full acceptance campaign. Independent review checks the fix.
164
-
165
- 1. Record the failed SHA, actual checkout, build variant, device type and retained
166
- evidence. Locate the earliest failing stage: build/install → launch → load code/assets
167
- → initialize → render → interact. Distinguish host/CI, harness, transport and product
168
- failures; an absent screen alone does not identify which one failed.
169
- 2. Choose the smallest test that can expose the suspected defect: a host test for logic,
170
- real producer/consumer composition for a contract, or a device test for native/runtime
171
- behavior. Collect evidence appropriate to that stage. A service probe proves only the
172
- probe, not that the application used the same path.
173
- 3. State competing explanations and a distinguishing observation. Change one variable.
174
- For reversible defects, a failure → correction → failure comparison can strengthen
175
- the finding; it is optional, not a gate. For intermittent failures, use a bounded,
176
- repeatable trigger and compare failure rates. Do not replay Authentication or financial
177
- actions merely to obtain a comparison.
178
- 4. Keep the first exception and its evidence separate from cleanup errors. Bound the
179
- full command and each subprocess wait, allowing the resource owner time to clean up.
180
- A live worker or an outstanding tool call is not evidence of progress.
181
- 5. Verify the fix at the failing checkpoint, then run the affected validation once.
182
- Broader acceptance belongs to its scheduled integration or release checkpoint, not
183
- automatically to this diagnosis assignment. Preserve any explicitly required gate.
184
- Report local reproduction, source CI and post-deploy acceptance separately. A local
185
- result on another API/ABI or a copied APK is not proof of the original CI artifact.
186
-
187
- Continue when the next attempt tests a new prediction, collects a missing observation,
188
- reduces the reproduction, or adds a justified sample for an intermittent failure. Name
189
- that purpose and bound its cost. Changing workers or repeating an unchanged run without
190
- such a purpose is not progress. When no available experiment distinguishes the remaining
191
- explanations, report the missing evidence or access instead of restarting the campaign.
192
-
193
- ## Triage
194
-
195
- Name the earliest stage that failed. In CI, that is the first failed step. If the same
196
- journey passed on another run of the same commit, suspect the run or the journey before
197
- the product.
198
-
199
- | Stage | Typical signal |
200
- | --- | --- |
201
- | Prerequisites / install | missing SDK directory, wrong JDK, lockfile drift |
202
- | Harness unit tests (CI, before the APK) | a harness test fails on host state its fixture should fake (`requires 2 GiB reserve`) |
203
- | Export / APK | Metro bundling error, Gradle compile or dependency-resolution error |
204
- | Gradle network | Maven download or TLS-handshake errors on a cold build: fix routing, not code |
205
- | Emulator boot / ADB | `sys.boot_completed` never reaches 1, device offline, exit 124 |
206
- | Device to Metro | red box, "unable to load script", missing `adb reverse` mapping |
207
- | Bridge passes, debug app fails to load | possible app/probe endpoint mismatch; inspect the actual request before choosing a cause ([React Native example](references/diagnosis.md#example-react-native-debug-app-uses-another-metro)) |
208
- | Device to Metro, mid-journey | a screen's first Metro asset fails (`Unable to download asset from url: http://127.0.0.1:8081/assets/…`) while API calls still succeed |
209
- | Backend / Login | backend log errors, verification code not found in the database |
210
- | Backend tool, CI only | a Backend-backed step gets a 5xx in CI only; the log names a missing program (`Browser was not found at the configured executablePath`) |
211
- | adb transport, mid-journey | `connection terminated: read failed` in the adb trace after boot, then lost `adb reverse`: usually guest RAM |
212
- | UiAutomator server | `RemoteDisconnected` while the adb transport stays up: the on-device server was relaunched |
213
- | Journey harness | a wait right after a navigation times out while the destination is on screen |
214
- | Journey harness, short screen | a wait for a label times out only on a short or landscape screen, which shows the content above it |
215
- | Product assertion | a screen or state mismatch with a screenshot |
216
-
217
- Then match the signal against [references/gotchas.md](references/gotchas.md). If nothing
218
- matches, [confirm the suspected cause](references/gotchas.md#confirm-a-suspected-cause)
219
- before changing code.
220
-
221
- Preserve the failure evidence. Do not blindly replay steps that send codes, verify sessions
222
- or charge payments just to get a passing screenshot. One passing run does not prove the
223
- build is reliable.
224
-
225
- ## Feature work
226
-
227
- Read [references/feature-work.md](references/feature-work.md) before validating a
228
- product change in an established workspace. Preserve required CI and acceptance gates.
229
-
230
- ## Evidence record
231
-
232
- For setup proof only. Record:
233
-
234
- - Source SHA and the workspace root/path/base/branch/owner from the lifecycle record; host OS
235
- and architecture, the Expo SDK, and the node, pnpm, JDK, Python and emulator versions.
236
- - System image API, image type and ABI. The AVD name, serial and ports are run
237
- identifiers, not shared resources.
238
- - Each stage's exit status and duration.
239
- - The APK's SHA-256 (`shasum -a 256` or `sha256sum`) and its per-ABI `lib/` entries
240
- (`unzip -l`), checked on the APK itself rather than inferred from Gradle flags.
241
- - The journey's `PASS` markers and the cleanup results: database dropped, emulator exited,
242
- container removed, no listeners left on the backend or Metro ports.
243
- - Earlier failed or incomplete attempts. A later pass does not erase them.
244
-
245
- State what the run does not prove: tablet, accessibility (TalkBack), physical devices,
246
- signing, distribution, and any feature acceptance beyond the journey. Publish only
247
- sanitized evidence: no authentication codes, session cookies, customer data or raw
248
- payment payloads.
@@ -1,31 +0,0 @@
1
- # Delivery focus
2
-
3
- Name one immediate checkpoint from the task's existing acceptance criteria: for example,
4
- open the app and render the expected screen. Keep that target visible while diagnosing;
5
- passing setup or adding helper code is not a substitute. Each independent work unit has
6
- its own checkpoint, so this does not serialize unrelated work.
7
-
8
- - Preserve a known-working source/artifact and relevant environment as a comparison when
9
- one already exists. Do not start a baseline campaign or count that old artifact as proof
10
- of the candidate. Reuse caches and valid results under the repo's ownership rules.
11
- - Run the smallest test that reaches the failing behavior. After it supports the fix,
12
- complete focused validation and hand off to independent review. Run affected integrated
13
- acceptance at its explicit plan checkpoint and preserve required CI; do not repeatedly
14
- rebuild the full campaign to discover the next local defect or defer all journeys to
15
- the final task.
16
- - Before adding a service, transport or test abstraction, state which existing criterion
17
- needs it, why the current path cannot answer the question and the smallest alternative.
18
- Make routine choices within authorization; preserve shared-resource and acceptance
19
- approval boundaries. Do not expand infrastructure merely because a screen failed.
20
- - Every continuation states the current checkpoint, new evidence or concrete blocker,
21
- and the next distinguishing test. Carry prior failures across worker changes. If
22
- successive attempts leave the same checkpoint unproved, reassess and reduce the case
23
- or change the approach before assigning another similar attempt. Diagnostics can guide
24
- that decision but do not count as delivered functionality or reset coordinator limits.
25
- - Report behavior delivered and criteria still unproved first. Reuse existing results for
26
- time to reproduce, time to verified fix and full CI runs when available; never invent
27
- those measurements or create a reporting project to obtain them.
28
-
29
- When a coordinator owns the run, keep this context in its existing plan note and worker
30
- result. Follow its retry/replan rules; add no separate ledger, check or acceptance gate.
31
-
@@ -1,50 +0,0 @@
1
- # Feature work
2
-
3
- Read the repository's validation and delivery policy first. Preserve required CI and
4
- acceptance gates; this skill does not authorize skipping them or rewriting project
5
- policy. Keep validation early without repeating the entire campaign per candidate.
6
-
7
- | Stage | Scope | Ownership |
8
- | --- | --- | --- |
9
- | Every candidate | Relevant tests, typecheck and applicable build/export checks; targeted device checks for runtime-sensitive behavior. | Developer validates, reports evidence and gaps, then hands off to independent review. |
10
- | Integration checkpoint | Affected journeys through combined changes. | Coordinator schedules a separate validation task as soon as its prerequisites are ready. |
11
- | Final acceptance | Remaining cross-feature, device-matrix and release obligations, plus checks invalidated by later changes. | Coordinator accounts for all required gates, reusing earlier evidence only within its proven scope. |
12
-
13
- - Name focused checks and integrated journey checkpoints in the plan before implementation,
14
- with real prerequisites, an owner and observable results. Do not put all device testing
15
- in the last task. Start independent ready work concurrently within device/host capacity
16
- and existing ownership boundaries.
17
- - Choose the smallest check that proves the affected behavior. Host tests can prove logic
18
- or a harness correction; native integration, navigation, keyboard, lifecycle and
19
- accessibility changes need targeted owned-device evidence where host tests cannot prove
20
- runtime behavior. A successful build/export alone is not device proof.
21
- - Use existing supported journey selectors. If the harness cannot select the affected
22
- flow, report that limitation and schedule the smallest existing journey that covers it.
23
- Do not invent a flag, weaken assertions or silently omit device validation. For example,
24
- a filter change needs open/edit/apply/result evidence, not an unrelated payment campaign.
25
- - Reuse the workspace's private caches, venv and AVD configuration. Rerun setup stages only
26
- when their assumptions change. Rebuild when build inputs change, using the emulator ABI
27
- for focused work only where repository policy permits it. Do not require a fresh full
28
- build or full journey solely because the candidate HEAD changed. APK reuse still needs
29
- the source/configuration and artifact checks the repo requires; never relabel an old
30
- artifact or result as current-source proof.
31
- - At each checkpoint, state what changed and which earlier evidence that change invalidates.
32
- Reuse evidence only while source, configuration, artifact and environment remain applicable
33
- to the claimed behavior. Required current-source CI still runs; evidence reuse cannot
34
- replace a gate that requires a new run.
35
- - After a failed journey, local or a CI dispatch, enter Diagnosis mode and reproduce the
36
- failing checkpoint off CI before running it again. A fake UI can reproduce a harness
37
- navigation/scrolling bug; it cannot prove that the app loaded a bundle or rendered.
38
- Show the fix passes at the appropriate boundary, then rerun the affected check once.
39
- Never send a guessed fix to CI to see whether it passes. Use the Diagnosis continuation
40
- rule for unreproduced or intermittent failures; report uncertainty until evidence
41
- supports the cause.
42
- - Report source SHA, commands, results and remaining gaps at review handoff. For device
43
- checks, include the selected scenarios, `PASS` markers and cleanup exit. For a failure,
44
- name the earliest failing checkpoint and link retained evidence; preserve failed attempts.
45
- Separate build duration, device-check duration and total worker time when discussing cost.
46
- - Broader device acceptance (all ABIs, tablet, TalkBack, physical devices, a release device
47
- campaign) runs at the integration, release or campaign checkpoint the spec or repo assigns
48
- it. Do not recreate it per feature or postpone affected runtime checks until release.
49
- Record outstanding criteria as pending in their owning task or issue, never as passed.
50
-