Single-commit clean baseline after security scrub of niche-tells, project codenames, internal jargon, and contributor-email leaks. Contents: - 100 Rust crates (_primitives/_rust/) - 37 agent manifests (_manifests/) + generated specs (_generated/) - 67 user-invocable skills (skills/) - 33 hooks (hooks/) - Composition blocks (_blocks/) - Documentation (docs/, README.md) - TS adapter packages (_ts_packages/) - Assembler (_assembler/) - Roles (_roles/) - Templates (_templates/) - Forgejo CI (.forgejo/) Author: Denis Parfionovich <info@greendragon.info> License: see LICENSE.
4.1 KiB
4.1 KiB
| name | description | argument-hint |
|---|---|---|
| drive-import | Import one or more Google Drive folders as private repos into the local Forgejo dev-hub. Wraps the kei-drive-import bash wizard. Click-only path-picker, optional --scan auto-discover. Requires rclone OAuth (one-time) + Wave 45 dev-hub Forgejo running. | (optional) "drive:path/to/folder" |
/drive-import — Google Drive → Forgejo project import
Bridge to the kei-drive-import wizard. Two modes:
| Mode | When | How |
|---|---|---|
| explicit (default) | user knows the folder paths | one or more drive:path/... strings |
| scan | user wants auto-discover | --scan drive:Projects/ walks + classifies + asks |
Pre-flight (run once, idempotent)
./install.sh --profile=full-hub --yes— installs Forgejo + rclone + gitleaks, auto-creates admin user$USERwith random password (Keychainforgejo-admin-password) and access token (Keychainforgejo-api-token), stamps~/.claude/secrets/.envwithKEI_FORGEJO_USER,KEI_FORGEJO_URL,KEI_DRIVE_REMOTE,RCLONE_CONFIG. Implementation:install/lib-dev-hub-forgejo.sh::_dhf_bootstrap_admin_user.rclone --config ~/.config/rclone/rclone.conf config— interactive OAuth, scopedrive.readonly, remote namegdrive. One-time browser click on "Allow".
Pipeline — what happens per folder
classify (kei-gdrive-import classify --remote) → MUST not be ALREADY-REPO
↓
rclone copy (frozen flag block: --drive-skip-gdocs --drive-skip-shortcuts +
7 OS-junk excludes + --tpslimit 10 --checksum) → /tmp/staging/
↓
size + extension histogram (>50% .pdf or >30% media → user prompt)
↓
gitleaks dir --no-banner --redact → exit non-zero = BLOCKED-SECRETS
↓
language-aware .gitignore (SHA-pinned to github/gitignore@5763345…)
↓
git init -b main + commit "Import from Drive: <name>"
↓
POST /api/v1/user/repos {auto_init:false, private:true} (Basic auth, token from Keychain)
↓
git remote add origin "${FORGEJO_URL}/${FORGEJO_USER}/<name>.git"
↓
allowlist guard: case "$origin_url" in "${FORGEJO_URL}/"*) — derived from env
↓
git -c http.extraHeader="Authorization: Basic <b64>" push -u origin main
↓
ledger CSV row: timestamp,name,status,forgejo_url,staging_path
Status enum: OK / SKIPPED-ALREADY-REPO / BLOCKED-SECRETS / BLOCKED-FORGEJO / FAILED-RCLONE / FAILED-PUSH.
Invocation
When user says "import these folders from drive" / "пилотную папку из Google Drive в форджео":
- Ask user for one or more
drive:pathstrings (use AskUserQuestion if more than one). - Run:
kei-drive-import "drive:path1" "drive:path2" - Report: how many OK, how many SKIPPED, how many BLOCKED, ledger path.
For batch import, write a paths file:
drive:projects/A
drive:Work/clientB
# comments OK, blank lines OK
drive:foo/bar
Then: kei-drive-import --paths-from list.txt.
Failure modes — diagnose
| Symptom | Cause | Fix |
|---|---|---|
RCLONE_CONFIG not set |
first install never ran preflight | `cat ~/.claude/secrets/.env.example |
remote 'gdrive:' missing |
OAuth not done | rclone config (one-time browser click) |
Forgejo not reachable |
dev-hub daemon down | launchctl load ~/Library/LaunchAgents/com.keisei.forgejo.plist |
BLOCKED-SECRETS |
gitleaks found AKIA / GitHub PAT / PEM key | edit fixture or git rm the leak in staging, then re-run |
REJECTED: remote not allowlisted |
KEI_FORGEJO_URL mismatch between env and actual URL |
sync .env |
Don't
- Don't try
--scanon a 10k-folder root — preflight enumerates gdocs first which is slow - Don't pass paths with trailing slash — wizard normalises but use
drive:foonotdrive:foo/ - Don't manually push to github after import —
tools/sync-public.shis the public-mirror channel
See also
- Wizard source:
_templates/drive-import-wizard.sh.tmpl - Rust scorer:
_primitives/_rust/kei-gdrive-import/src/ - Install lib:
install/lib-dev-hub-gdrive-import.sh - Integration tests:
tests/gdrive_import_integration.sh(7/8 PASS, 1 graceful skip) - Plan + audit history:
tasks/kei-gdrive-import/PLAN.md