linkedin-archivelisted
Install: claude install-skill mishahanin/heading-os
# LinkedIn Archive
Move a just-published LinkedIn piece from staging (`outputs/content/linkedin/` plus optional explicit images) into the typed datastore archive (`datastore/content/linkedin-archive/{articles|posts|comments}/{slug}/`).
Script: `scripts/linkedin-archive.py`.
## Workflow
### 1. Resolve type if needed
If the staged file's name does not contain `_linkedin-(post|article|comment)_` and no `type:` frontmatter is set, ask the CEO via `AskUserQuestion`:
- Post
- Article
- Comment
Pass the answer to the script as `--type <choice>`.
### 2. Resolve images if any
Ask the CEO via `AskUserQuestion`:
- No image
- One image
- More than one
If "One image" or "More than one": send a follow-up plain-text turn, "Reply with the path(s) to the image(s)". Wait for the CEO's free-form reply, one path per line. `AskUserQuestion` is multiple-choice only, so path collection always happens in a separate text turn.
Pass each image as a separate `--image <path>` argument. Default is no image.
### 3. Dry-run
```bash
python scripts/linkedin-archive.py [--slug <slug>] [--type <type>] [--image <path>]...
```
Exit codes that need handling:
- `2`: nothing found - tell the CEO and stop.
- `3`: destination conflict - surface the existing folder, ask how to proceed.
- `5`: type still ambiguous - re-ask.
- `6`: image path does not exist - re-ask.
- `7`: source untracked - tell CEO to `git add`, then retry.
### 4. Confirm
Show the plan. Ask via `AskUserQuestion`:
- Approve and exec