Skip to content

amico-slack: dedup Authored by Amico footer and default send to Aaron #330

Description

@aarontrowbridge

Important

Problemamico-slack send double-types _Authored by Amico_ (agent writes it into the file + CLI appends) and defaults to the bot identity unless --as-user is passed, so posts appear from amicobot instead of Aaron.
Approach — Make the CLI idempotent (strip existing footer before appending, loop to collapse doubles), default send to Aaron (--as-bot to opt out, --as-user stays for compat), fix _positional arg parsing so --thread/--file values don't leak, and harden the SKILL.md to say the CLI owns the footer and chat:write.customize is required.
Scope — in: ~/.local/bin/amico-slack footer/sender/arg fixes + packages/extension/skills/amico-slack/SKILL.md doc update. out: token/scope provisioning, Notturno DM path.
Assumptionschat:write.customize + reinstall is the remaining requirement for username override; existing bot-intent callers can use --as-bot.

Acceptance Criteria

  • amico-slack send "#chan" --file /tmp/msg.txt where msg.txt already ends with _Authored by Amico_ posts with exactly one footer
  • amico-slack send "#chan" "hello" without flags posts as Aaron with one footer; ... --as-bot posts as bot with no footer
  • --thread/--file values are not treated as positional args for channel/message/limit
  • SKILL.md states the default is Aaron, footer is idempotent/CLI-owned, and chat:write.customize + reinstall requirement

Testing Decisions

Manual CLI checks (amico-slack --help, _strip_existing_footer/_positional unit snippets, file-with-footer send to test channel + amico-slack read); no new automated suite for this CLI (mirror amico-linkedin manual pattern). Existing pnpm --filter amicode test stays green.

Key Decisions

  • Default to as-user; --as-bot opt-out keeps compat without requiring callers to remember --as-user.
  • Loop-strip footer so a pre-doubled file still collapses to one.
  • Keep fix scoped to CLI + skill; vault-staged copies are resynced from the canonical skill.

Constraints & Invariants

  • --as-user remains accepted (back-compat).
  • Footer stays _Authored by Amico_ (single canonical form).
  • No file paths or code in issue body beyond module names.

Prior Art

packages/extension/skills/amico-slack/SKILL.md, ~/.local/bin/amico-slack (cmd_send, _flag/_positional), automation/notturno/slack.py (DM path — not affected, bot identity intentional)

Source

Chore — development gate auto-create from slack footer/sender report.

Notes

CLI fix already landed in ~/.local/bin/amico-slack locally; this issue tracks the versioned skill doc + any canonical CLI sourcing follow-up.

Metadata

Metadata

Assignees

No one assigned

    Labels

    hitlHuman-in-the-loop — needs human review/decision

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions