Files
Rajat Kapoor 051a266090 feat(typefully): add planned drafts support (#32)
## What

Adds planned-drafts support to the Typefully skill, matching the API v2
write support shipping in typefully-backend#1785.

A **planned draft** sits on the queue/calendar at its date but is inert
— it never auto-publishes until confirmed into a real schedule.

## Changes

- **`--plan <iso|next-free-slot>`** on `drafts:create` and
`drafts:update` → sends `plan_at`. Mutually exclusive with `--schedule`
(friendly CLI error before hitting the API). On update, literal `null`
clears the plan and returns the draft to plain draft status (same
convention as `--cover-media-id null`).
- **New `drafts:plan <social_set_id> <draft_id> --time <...>`** command
mirroring `drafts:schedule`, including the `--use-default` single-arg
safety gate.
- **`drafts:list --status planned`** documented (the filter was already
passed through; help text and docs now include it).
- **SKILL.md**: planned lifecycle in the Schedule & publish section
(confirm via `drafts:schedule`, publish via `drafts:publish`, lapsed
planned dates are *not* failures — replan or confirm), a Common-actions
row, flag/command table entries, and planned-aware `queue:get`
description.
- **CHANGELOG.md**: user-facing entry.

## Tests

6 new tests in `tests/drafts.test.js` covering: `drafts:plan` payload +
missing `--time`, create with `--plan` (and no `publish_at` leak), the
`--schedule`+`--plan` mutual-exclusion error, update with `--plan`, and
`--plan null` sending `plan_at: null`. Full suite: **130 passed**.

## Notes

- The backend PR (typefully-backend#1785) should merge/deploy first;
until then `plan_at` is rejected by the API.
- Not included (possible follow-up): an unschedule command (`publish_at:
null`) — the CLI never had one and it's orthogonal to planned drafts.

https://claude.ai/code/session_01267PabjVxa2EQueJ9oZoT9
2026-08-05 15:15:57 +05:30
..