You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Problem — amico-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. Assumptions — chat: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.
Important
Problem —
amico-slack senddouble-types_Authored by Amico_(agent writes it into the file + CLI appends) and defaults to the bot identity unless--as-useris passed, so posts appear fromamicobotinstead of Aaron.Approach — Make the CLI idempotent (strip existing footer before appending, loop to collapse doubles), default
sendto Aaron (--as-botto opt out,--as-userstays for compat), fix_positionalarg parsing so--thread/--filevalues don't leak, and harden the SKILL.md to say the CLI owns the footer andchat:write.customizeis required.Scope — in:
~/.local/bin/amico-slackfooter/sender/arg fixes +packages/extension/skills/amico-slack/SKILL.mddoc update. out: token/scope provisioning, Notturno DM path.Assumptions —
chat:write.customize+ reinstall is the remaining requirement forusernameoverride; existing bot-intent callers can use--as-bot.Acceptance Criteria
amico-slack send "#chan" --file /tmp/msg.txtwheremsg.txtalready ends with_Authored by Amico_posts with exactly one footeramico-slack send "#chan" "hello"without flags posts as Aaron with one footer;... --as-botposts as bot with no footer--thread/--filevalues are not treated as positional args for channel/message/limitchat:write.customize+ reinstall requirementTesting Decisions
Manual CLI checks (
amico-slack --help,_strip_existing_footer/_positionalunit snippets, file-with-footer send to test channel +amico-slack read); no new automated suite for this CLI (mirroramico-linkedinmanual pattern). Existingpnpm --filter amicode teststays green.Key Decisions
--as-botopt-out keeps compat without requiring callers to remember--as-user.Constraints & Invariants
--as-userremains accepted (back-compat)._Authored by Amico_(single canonical form).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-slacklocally; this issue tracks the versioned skill doc + any canonical CLI sourcing follow-up.