@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
@@ -1,188 +0,0 @@
1
- # Android foundation: shell snippets
2
-
3
- Replace each `<placeholder>` with the repo's real value. Tool shells do not keep variables,
4
- functions or traps between calls: step 1 resolves the workspace and writes
5
- `.cache/android-env.sh`, which also `cd`s into it; every later block starts by sourcing it by
6
- absolute path, and steps 6–8 run as one command through the bundled `scripts/device-run.sh`.
7
-
8
- ## 1. Workspace and environment
9
-
10
- Workspace precedence is owned by [workspace.md](workspace.md). Do not create a worktree,
11
- switch branch, fetch or reset when the caller supplied an isolated workspace.
12
-
13
- ```bash
14
- set -euo pipefail
15
- ASSIGNED_WORKSPACE=<assigned-workspace-or-empty>
16
- CANDIDATE_HEAD=<candidate-head-or-empty>
17
- WORKSPACE="${ASSIGNED_WORKSPACE:?use the caller assignment or native-start result from workspace.md}"
18
- test -d "$WORKSPACE"
19
- git -C "$WORKSPACE" rev-parse --is-inside-work-tree >/dev/null
20
- cd "$WORKSPACE"
21
- actual_head="$(git rev-parse HEAD)"
22
- test -z "$CANDIDATE_HEAD" || test "$actual_head" = "$(git rev-parse "$CANDIDATE_HEAD^{commit}")" || {
23
- echo "workspace HEAD $actual_head != candidate $CANDIDATE_HEAD; report it; do not switch" >&2
24
- exit 1
25
- }
26
- mkdir -p .cache
27
- { echo 'set -euo pipefail'; printf 'cd %q\n' "$PWD"; printf 'export ANDROID_SOURCE_HEAD=%q\n' "$actual_head"; } > .cache/android-env.sh
28
- cat >> .cache/android-env.sh <<'ENV'
29
-
30
- # Repo-specific names, read from the repo's journey wrapper and device harness.
31
- export APP_FILTER=<android-workspace-package> # pnpm --filter target
32
- export DEVICE_PYTHON_DIR=<venv-dir-the-wrapper-reads> # e.g. the default in the wrapper
33
- export DB_NAME_PREFIX=<db-prefix-the-harness-accepts> # the harness rejects other names
34
- export DB_URL_VAR=<harness-admin-url-variable> # e.g. SHARD_ADMIN_URL
35
- export DB_NAME_VAR=<harness-db-name-variable> # e.g. SHARD_DB_NAME
36
-
37
- # Host paths. Example values are for Apple Silicon with Android Studio.
38
- export JAVA_HOME=/opt/homebrew/opt/openjdk@17/libexec/openjdk.jdk/Contents/Home
39
- export ANDROID_HOME="$HOME/Library/Android/sdk"
40
- export ANDROID_SDK_ROOT="$ANDROID_HOME"
41
- export SOURCE_AVD="$HOME/.android/avd/<installed-avd>.avd"
42
- export SEED_GRADLE_HOME="$HOME/.gradle"
43
- export PATH="$JAVA_HOME/bin:$ANDROID_HOME/platform-tools:$PATH"
44
-
45
- # Private caches.
46
- export GRADLE_USER_HOME="$PWD/.cache/gradle"
47
- export ANDROID_USER_HOME="$PWD/.cache/android-user"
48
- export ANDROID_AVD_HOME="$PWD/.cache/android-avd"
49
- export TMPDIR="$PWD/.cache/tmp"
50
- export npm_config_cache="$PWD/.cache/npm"
51
- export npm_config_devdir="$PWD/.cache/node-gyp"
52
- export PNPM_CONFIG_STORE_DIR="$PWD/.cache/pnpm-store"
53
- export PNPM_CONFIG_CACHE_DIR="$PWD/.cache/pnpm"
54
- case "${JAVA_TOOL_OPTIONS:-}" in *java.io.tmpdir*) ;; *)
55
- export JAVA_TOOL_OPTIONS="${JAVA_TOOL_OPTIONS:+$JAVA_TOOL_OPTIONS }-Djava.io.tmpdir=$TMPDIR" ;; esac
56
-
57
- # Run identifiers: an even console port in 5554-5584 (adb scans only that range),
58
- # and backend/Metro ports under the names the journey wrapper reads.
59
- export SETUP_AVD=<new-unique-avd-name>
60
- export EMULATOR_PORT=<even-port-5554-5584>
61
- export ANDROID_BACKEND_PORT=<free-port>
62
- export ANDROID_METRO_PORT=<free-port>
63
- # Choose the whole-journey deadline; zero disables it and is not suitable for unattended runs.
64
- export JOURNEY_SECONDS=<positive-journey-timeout-seconds>
65
- ENV
66
- source .cache/android-env.sh
67
- mkdir -p "$TMPDIR" "$npm_config_cache" "$npm_config_devdir" \
68
- "$ANDROID_USER_HOME" "$ANDROID_AVD_HOME" .cache/logs
69
-
70
- node --version; pnpm --version; java -version; python3 --version
71
- adb version; "$ANDROID_HOME/emulator/emulator" -version
72
- # Versions come from the repo's native config and CI preflight.
73
- for component in platforms/android-<api> build-tools/<build-tools> ndk/<ndk> cmake/<cmake>; do
74
- test -d "$ANDROID_HOME/$component" || { echo "Missing SDK: $component" >&2; exit 1; }
75
- done
76
- ```
77
-
78
- The recorded standalone path is reused on retries; verify its lifecycle record names this
79
- run, branch and base. If an assigned path is missing, is not a Git worktree, or is at another
80
- revision, stop and report instead of creating another checkout. Never fall back to
81
- `../<repo>-android-setup`.
82
-
83
- If the wrapper reads ports or Python under other names, export aliases in
84
- `android-env.sh` **as well as** the bundled runner's required names. For example,
85
- `export APP_METRO_PORT="$ANDROID_METRO_PORT"`; both must select the same port. Adapt
86
- `DB_URL_VAR` and `DB_NAME_VAR` to the actual harness, not its fallback defaults.
87
-
88
- ## 2. Install and check
89
-
90
- ```bash
91
- source <worktree>/.cache/android-env.sh
92
- pnpm install --frozen-lockfile --store-dir "$PWD/.cache/pnpm-store"
93
- pnpm --filter "$APP_FILTER" test
94
- pnpm --filter "$APP_FILTER" typecheck
95
- EXPO_PUBLIC_API_URL=https://app.invalid \
96
- pnpm --filter "$APP_FILTER" exec expo export --platform android
97
- python3 -m venv "$DEVICE_PYTHON_DIR"
98
- "$DEVICE_PYTHON_DIR/bin/python3" -m pip install uiautomator2==<harness-pinned-version>
99
- ```
100
-
101
- ## 3. Gradle dependencies (pick one)
102
-
103
- Seed from a trusted Gradle home:
104
-
105
- ```bash
106
- source <worktree>/.cache/android-env.sh
107
- mkdir -p "$GRADLE_USER_HOME/caches/modules-2/files-2.1"
108
- rsync -r --ignore-existing \
109
- --exclude='*.lock' --exclude='*.lck' --exclude='*.tmp' \
110
- "$SEED_GRADLE_HOME/caches/modules-2/files-2.1/" \
111
- "$GRADLE_USER_HOME/caches/modules-2/files-2.1/"
112
- ```
113
-
114
- Or wire a trusted Maven proxy into the private Gradle home. Append the exports to
115
- `android-env.sh` so the build in step 4 sees them. Route every repository the build uses,
116
- JitPack included; a route left unset goes straight upstream.
117
-
118
- ```bash
119
- source <worktree>/.cache/android-env.sh
120
- cat >> "$PWD/.cache/android-env.sh" <<'ENV'
121
- export GRADLE_MAVEN_REPOSITORY=<proxy>/maven/
122
- export GRADLE_GOOGLE_REPOSITORY=<proxy>/google-maven/
123
- export GRADLE_PLUGIN_REPOSITORY=<proxy>/gradle-plugins/
124
- export GRADLE_JITPACK_REPOSITORY=<proxy>/jitpack/
125
- ENV
126
- curl --fail --silent --show-error --max-time 10 <proxy-health-url>
127
- install -d "$GRADLE_USER_HOME/init.d"
128
- install -m 0644 <path/to/proxy.init.gradle> "$GRADLE_USER_HOME/init.d/proxy.init.gradle"
129
- ```
130
-
131
- ## 4. Build
132
-
133
- ```bash
134
- source <worktree>/.cache/android-env.sh
135
- pnpm build:android --max-workers=2 -Dorg.gradle.parallel=false \
136
- -Pandroid.builder.sdkDownload=false --console=plain --info \
137
- 2>&1 | tee .cache/logs/gradle.log
138
- APK=<path/to/app/build/outputs/apk/debug/app-debug.apk>
139
- shasum -a 256 "$APK" # sha256sum on Linux
140
- unzip -l "$APK" | grep -E 'lib/[^/]+/libreactnative\.so'
141
- ```
142
-
143
- ## 5. Owned emulator
144
-
145
- ```bash
146
- source <worktree>/.cache/android-env.sh
147
- test -f "$SOURCE_AVD/config.ini"
148
- test ! -e "$ANDROID_AVD_HOME/$SETUP_AVD.ini"
149
- test ! -e "$ANDROID_AVD_HOME/$SETUP_AVD.avd"
150
- grep '^image.sysdir.1' "$SOURCE_AVD/config.ini" # must be an installed, host-compatible image
151
- mkdir "$ANDROID_AVD_HOME/$SETUP_AVD.avd"
152
- # Copy without the source's RAM size and give the guest 4 GB (gotchas: adb transport drops).
153
- grep -Ev '^hw\.ramSize[[:space:]]*=' "$SOURCE_AVD/config.ini" > "$ANDROID_AVD_HOME/$SETUP_AVD.avd/config.ini"
154
- echo 'hw.ramSize=4096' >> "$ANDROID_AVD_HOME/$SETUP_AVD.avd/config.ini"
155
- printf 'avd.ini.encoding=UTF-8\npath=%s\ntarget=android-<api>\n' \
156
- "$ANDROID_AVD_HOME/$SETUP_AVD.avd" > "$ANDROID_AVD_HOME/$SETUP_AVD.ini"
157
- ```
158
-
159
- ## 6–8. Cleanup, resources and journey: one command
160
-
161
- ```bash
162
- source <worktree>/.cache/android-env.sh
163
- bash <skill-base-dir>/scripts/device-run.sh \
164
- --drop node <path/to/device-harness.mjs> drop \
165
- -- bash <path/to/foundation-journey-wrapper.sh>
166
- ```
167
-
168
- Pass each command as separate words, not as one quoted string. The script:
169
-
170
- 1. Registers the cleanup trap before anything starts.
171
- 2. Refuses an emulator port outside 5554–5584 and any busy port.
172
- 3. Starts the ADB server, then the emulator (its PID recorded), then `postgres` with
173
- `--cidfile` on a random loopback port. Override the image with `POSTGRES_IMAGE`.
174
- 4. Waits for `sys.boot_completed=1` and `pg_isready`. Startup/readiness and cleanup
175
- commands have a 30-second limit (`BOUNDED_SECONDS`); exit 124 is terminal. The journey
176
- uses the separate `JOURNEY_SECONDS` deadline. Leave time for cleanup after that deadline.
177
- 5. Exports `$DB_URL_VAR`, `$DB_NAME_VAR` (`$DB_NAME_PREFIX` plus a unique suffix) and
178
- `ANDROID_EMULATOR_SERIAL`, then runs the journey.
179
- 6. Drops the database, stops the emulator PID (`TERM`, then `KILL` after 10 seconds),
180
- removes the container by its CID, and prints `original_stage_exit=<n> cleanup_exit=<n>`.
181
- It exits with the journey's status if the journey failed, else the cleanup status.
182
-
183
- The runner supervises the journey's process group. Journey children must stay in that
184
- group; a wrapper that deliberately creates detached services must stop those services
185
- through its own owner. Send TERM to the launcher and allow its cleanup to finish rather
186
- than killing it immediately. The generic runner inherits the caller's ADB endpoint and
187
- does not stop that server: use a verified private endpoint on a shared host and close it
188
- through the caller's owner. Capture the command's exit status and final summary line.
@@ -1,81 +0,0 @@
1
- # Android workspace lifecycle
2
-
3
- The coordinator or caller owns workspace selection. Resolve it once, before any setup stage,
4
- and record the result. This reference owns only that lifecycle: private caches, SDK isolation,
5
- emulator ownership and process cleanup stay in [setup.md](setup.md) and
6
- [Owned-resource cleanup](../SKILL.md#owned-resource-cleanup).
7
-
8
- ## Precedence
9
-
10
- 1. **Assigned workspace and candidate HEAD.** When the caller supplies an isolated workspace
11
- and a candidate HEAD, use that workspace and that revision. Do not create a worktree or
12
- branch, fetch, reset or switch revisions. Read `git rev-parse HEAD` and report it as the
13
- source SHA. If it differs from the candidate HEAD, stop and report the mismatch; never
14
- switch the workspace to match.
15
- 2. **Existing owned workspace.** Feature work, fixes and diagnosis reuse the workspace this
16
- run or unit already owns, with its private caches, venv and AVD profile. Do not make a
17
- second workspace for a retry, a correction or a read-only investigation.
18
- 3. **Standalone fresh setup.** Only when the coordinator reports no usable assignment. Create
19
- one managed workspace at
20
- `<repo>/.resolve-issues/rush/<run-id>/units/native`. Never create a sibling checkout such
21
- as `../<repo>-android-setup`, and never add a second managed path for a retry.
22
-
23
- Android and iOS setup in the same run share that one managed workspace; their private cache
24
- subdirectories and short-lived processes stay separate.
25
-
26
- An assigned path that is missing, is not a Git worktree, or is at another revision is not an
27
- invitation to substitute a fresh checkout: stop and report it. For diagnosis, name the actual
28
- checkout and HEAD and confirm it contains the failing code; the repository root or another
29
- checkout may lag the candidate.
30
-
31
- ## Record before creating
32
-
33
- The bundled `scripts/workspace-runtime` is generated from the shared lifecycle
34
- engine and ships with this skill. Only for standalone fresh setup, run:
35
-
36
- ```bash
37
- node <skill-base-dir>/scripts/workspace-runtime/bin/workspaces.mjs native-start --repo <canonical-root> \
38
- --platform android --target <verified-target-branch> --base <candidate-SHA> --json
39
- ```
40
-
41
- The command records root, owner, exact base, branch, workspace and disposable cache
42
- paths before creating anything. Use its returned `workspace` as `ASSIGNED_WORKSPACE`
43
- and `sourceSha` as `CANDIDATE_HEAD` in setup. Keep `run` and `runId`; repeat with
44
- `--run-id <returned-run-id>` and the same base, target and kind for retries. Never
45
- invoke it inside a coordinator-assigned unit. It never substitutes `origin/main`
46
- for the requested source or resets an existing workspace.
47
- For a package below the root, pass `--native-dir <package-root-containing-android>`.
48
- Declare other installs or build directories before use with repeated
49
- `--disposable <exact-workspace-relative-path>`, including package-local `node_modules`.
50
-
51
- ## Development workspace vs short-lived processes
52
-
53
- The workspace, its private caches under `.cache/`, its venv and its AVD profile are
54
- development resources: retain them across retries and fixes, and keep them private to this
55
- workspace. Never relocate them to a global cache or share them with a concurrent owner.
56
-
57
- Emulators, containers, databases, Metro and ADB endpoints are short-lived: start only those
58
- the selected checks need and stop only the ones this run started, under the existing
59
- [cleanup rules](../SKILL.md#owned-resource-cleanup). Never delete a worktree, remove a cache
60
- with a chmod or `rm` pattern, or use a broad kill to end a process.
61
-
62
- A read-only diagnosis does not require a clean environment. Reuse the owned workspace and its
63
- caches, create only the services the observation needs, and preserve the failed environment's
64
- evidence. Do not rebuild, reinstall or re-provision merely because the failure is being
65
- investigated.
66
-
67
- ## Completion
68
-
69
- At the end of the assignment, return the workspace, its cache paths and any retained process
70
- records to the coordinator for final cleanup. The coordinator owns deletion and retention.
71
- Register the path with the run's cleanup owner so final cleanup can tell a delivered
72
- standalone run from unfinished or unpublished work.
73
-
74
- - A successful, delivered standalone run must not retain an unbounded cache: mark the
75
- workspace and its disposable caches for final cleanup. After stopping its owned
76
- services, run `node <skill-base-dir>/scripts/workspace-runtime/bin/workspaces.mjs native-finish --run <run> --json`
77
- from the owner checkout. This uses the same cleanup engine as issue workflows.
78
- - Unfinished or unpublished standalone work keeps the workspace and caches for the next
79
- attempt; report what is retained and why.
80
-
81
- The parent lifecycle record is authoritative for ownership, retention and final cleanup.