← ClaudeAtlas

ingest-sourcelisted

Owner-only — pull a single GitHub/GitLab item, Google Doc, local file, or (if the channel is enabled) Slack thread into `sources/`, then stage a memory-update proposal that the owner can refine and commit. Triggers: "ingest <url>", "吸收這個", "/ingest", URL paste from owner.
kylus/agentport · ★ 0 · AI & Automation · score 70
Install: claude install-skill kylus/agentport
# ingest-source Pulls one external source into the topic's `sources/` cache and prepares a draft memory update. ## Behavior 1. Verify owner role. Contributors cannot trigger ingest. 2. Parse the URL / path → service + identifier: - `github.com/<owner>/<repo>/{issues|pull|discussions|wiki}/<n>` → GitHub item - `gitlab.com/<group>/<repo>/-/{issues|merge_requests|wikis}/<n>` → GitLab item - `docs.google.com/document/d/<id>` → Google Doc - `*.slack.com/archives/<chan>/p<ts>` → Slack thread (only when this topic has the Slack channel enabled) - a local file path the owner points at → local file (no script; copy into `sources/local/` and summarize with Read) 3. Invoke the matching ingest script via Bash (each script is a PEP 723 self-contained `uv run --script`, so just execute the file directly): - `core/ingest/github_ingest.py <issue|pr|discussion|wiki|repo-list> <owner/repo> [<n>]` - `core/ingest/gitlab_ingest.py <issue|mr|wiki|repo-list> <group/repo> [<n>]` - `core/ingest/drive_ingest.py doc <id>` - `core/ingest/slack_ingest.py thread <chan> <ts>` Each script: - fetches the source via SDK (auth via `~/.claude/secrets/agentport.env`) - writes raw content to `sources/<service>/<id>.json` + `sources/<service>/<id>.md` (human-readable) - returns a JSON summary on stdout 4. Read the ingest result. Summarize: - **What is this source about?** - **Key claims / decisions / questions raised** - **Cross-references to othe