@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.
- package/.codex-plugin/plugin.json +1 -1
- package/.codex-plugin/resources.json +145 -142
- package/README.md +1 -1
- package/package.json +5 -5
- package/skills/app-dev/airflow/SKILL.md +1 -1
- package/skills/app-dev/android-development/SKILL.md +126 -0
- package/skills/app-dev/android-development/references/android-conventions.md +117 -0
- package/skills/app-dev/{android-foundation → android-development}/references/ci.md +10 -6
- package/skills/app-dev/{android-foundation → android-development}/references/diagnosis.md +39 -15
- package/skills/app-dev/android-development/references/feature-work.md +171 -0
- package/skills/app-dev/android-development/references/framework-choice.md +88 -0
- package/skills/app-dev/{android-foundation → android-development}/references/gotchas.md +43 -6
- package/skills/app-dev/android-development/references/init.md +104 -0
- package/skills/app-dev/android-development/references/setup.md +389 -0
- package/skills/app-dev/android-development/references/workspace.md +156 -0
- package/skills/app-dev/android-development/scripts/init.mjs +380 -0
- package/skills/app-dev/app-debug/SKILL.md +1 -1
- package/skills/app-dev/better-auth/SKILL.md +1 -1
- package/skills/app-dev/data-catalog/SKILL.md +1 -1
- package/skills/app-dev/data-quality/SKILL.md +1 -1
- package/skills/app-dev/ios-foundation/SKILL.md +2 -2
- package/skills/app-dev/monorepo/SKILL.md +1 -1
- package/skills/app-dev/nextjs-fullstack/SKILL.md +1 -1
- package/skills/app-dev/prisma-setup/SKILL.md +1 -1
- package/skills/app-dev/pyspark/SKILL.md +1 -1
- package/skills/app-dev/python-backend/SKILL.md +1 -1
- package/skills/app-dev/shadcn/SKILL.md +1 -1
- package/skills/app-dev/zod-v4/SKILL.md +1 -1
- package/skills/cicd/cloud-build/SKILL.md +1 -1
- package/skills/cicd/cloud-debug/SKILL.md +1 -1
- package/skills/cicd/cloud-deploy/SKILL.md +1 -1
- package/skills/cicd/docker/SKILL.md +1 -1
- package/skills/cicd/github-actions/SKILL.md +1 -1
- package/skills/cicd/github-flow/SKILL.md +1 -1
- package/skills/cicd/google-cloud/SKILL.md +1 -1
- package/skills/cicd/mergify/SKILL.md +1 -1
- package/skills/cicd/podman/SKILL.md +1 -1
- package/skills/content/article-review/SKILL.md +1 -1
- package/skills/content/article-to-image/SKILL.md +1 -1
- package/skills/content/flowchart-svg/SKILL.md +1 -1
- package/skills/content/image-gen/SKILL.md +1 -1
- package/skills/content/mermaid/SKILL.md +1 -1
- package/skills/content/wechat-article-writer/SKILL.md +1 -1
- package/skills/content/wechat-publisher/SKILL.md +1 -1
- package/skills/content/wechat-search/SKILL.md +1 -1
- package/skills/content/xai-search/SKILL.md +1 -1
- package/skills/core/distill-writing/SKILL.md +1 -1
- package/skills/core/doc-to-md/SKILL.md +1 -1
- package/skills/core/editorial-review/SKILL.md +1 -1
- package/skills/core/house-style/SKILL.md +1 -1
- package/skills/core/plain-language/SKILL.md +1 -1
- package/skills/core/polish-cn/SKILL.md +1 -1
- package/skills/core/reg-parser/SKILL.md +1 -1
- package/skills/core/terminology/SKILL.md +1 -1
- package/skills/core/write-doc/SKILL.md +1 -1
- package/skills/core/write-report/SKILL.md +1 -1
- package/skills/engineering/better-review/SKILL.md +1 -1
- package/skills/engineering/e2e-test/SKILL.md +1 -1
- package/skills/engineering/engineering/SKILL.md +9 -3
- package/skills/engineering/engineering/references/init-scope.md +7 -3
- package/skills/engineering/engineering/references/scope-management.md +9 -0
- package/skills/engineering/engineering/scripts/init.mjs +40 -17
- package/skills/engineering/engineering-runtime/SKILL.md +1 -1
- package/skills/engineering/engineering-runtime/coherence/workflow.json +13 -13
- package/skills/engineering/ensure-coverage/SKILL.md +1 -1
- package/skills/engineering/golden-path/SKILL.md +1 -1
- package/skills/engineering/harness-runtime/SKILL.md +1 -1
- package/skills/engineering/resolve-issues/SKILL.md +1 -1
- package/skills/engineering/resolve-issues/references/exploration.md +1 -1
- package/skills/engineering/resolve-release/SKILL.md +1 -1
- package/skills/engineering/rush-issues/SKILL.md +1 -1
- package/skills/engineering/rush-release/SKILL.md +1 -1
- package/skills/engineering/test-quality/SKILL.md +1 -1
- package/skills/risk-compliance/compliance-audit/SKILL.md +1 -1
- package/skills/risk-compliance/contract-compare/SKILL.md +1 -1
- package/skills/risk-compliance/contract-review/SKILL.md +1 -1
- package/skills/risk-compliance/doc-authenticity/SKILL.md +1 -1
- package/skills/risk-compliance/fraud-detection/SKILL.md +1 -1
- package/skills/risk-compliance/payment-analysis/SKILL.md +1 -1
- package/skills/risk-compliance/portfolio-payment-analysis/SKILL.md +1 -1
- package/skills/risk-compliance/similar-domain/SKILL.md +1 -1
- package/skills/risk-compliance/tld-detection/SKILL.md +1 -1
- package/skills/app-dev/android-foundation/SKILL.md +0 -248
- package/skills/app-dev/android-foundation/references/delivery-focus.md +0 -31
- package/skills/app-dev/android-foundation/references/feature-work.md +0 -50
- package/skills/app-dev/android-foundation/references/setup.md +0 -188
- package/skills/app-dev/android-foundation/references/workspace.md +0 -81
- /package/skills/app-dev/{android-foundation → android-development}/LICENSE +0 -0
- /package/skills/app-dev/{android-foundation → android-development}/assets/android-ci-job.yml +0 -0
- /package/skills/app-dev/{android-foundation → android-development}/release-check.mjs +0 -0
- /package/skills/app-dev/{android-foundation → android-development}/scripts/device-run.sh +0 -0
- /package/skills/app-dev/{android-foundation → android-development}/scripts/workspace-runtime/bin/workspaces.mjs +0 -0
- /package/skills/app-dev/{android-foundation → android-development}/scripts/workspace-runtime/native-workspace.mjs +0 -0
- /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.
|
|
File without changes
|
/package/skills/app-dev/{android-foundation → android-development}/assets/android-ci-job.yml
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|