Skip to content

App Creator Feedback

Send feedback about your /app-creator session — what was confusing, what broke, what should change. The skill uploads the current conversation trace and posts a short note to the Poe app-platform team so they can replay the exact context that triggered the issue.

User Argument:

If empty, ask "What's the feedback?" and stop. Otherwise treat the argument as the verbatim user complaint.

Example invocations:

  • /app-creator-feedback the schema scaffold left an unused mutator and the publish step failed silently
  • /app-creator-feedback haptic feedback advice should mention the iOS Safari gap up front

Prerequisites

  • POE_API_KEY in the shell environment.
  • bash, curl, and jq on PATH.

This skill is self-contained. All HTTP work is done by the bundled submit-feedback.sh script next to this file — no dev-tools CLI or other in-repo tooling is required.

Workflow

The bundled submit-feedback.sh has two subcommands:

  • prepare — locate the latest Claude Code session JSONL, upload it, register session metadata. Prints TRACE_URL=... on stdout.
  • post — post the top-level + thread reply to Slack via dev-tools-api /post-message. Reads TOP_TEXT / THREAD_TEXT from env (multi-line user complaints with quotes/backticks would mangle as positional args).

Step 1 — Prepare (upload trace)

submit-feedback.sh lives in the same directory as this SKILL.md. The Claude Code runtime exposes that directory as the Base directory for this skill: line in the skill's system prompt. Set SCRIPT to that absolute path:

bash
SCRIPT="<base-directory-for-this-skill>/submit-feedback.sh"

eval "$("$SCRIPT" prepare)"
# After eval: $TRACE_URL is set in the shell.

If prepare exits non-zero, surface the error to the user and stop — do not attempt to post without a trace URL.

Step 2 — Draft the messages

From the verbatim complaint and the recent /app-creator conversation, draft two messages:

  1. Top-level summary (posted in channel). Use the literal token — the dev-tools-api server substitutes the caller's Slack handle from POE_EMPLOYEES.slackHandle (resolved via Bearer auth). Do NOT embed a Poe handle yourself; Poe handles and Slack handles are different namespaces and a textual @<poe-handle> would either fail to mention anyone or mention the wrong person.

    `/app-creator-feedback` from @{{currentUserSlackHandle}}:
    ```{verbatim complaint}```

    No "see thread" suffix — Slack already shows a reply count.

  2. Thread reply with full context. Must be:

    • Reproducible — what the user did/asked that triggered the issue.
    • Actionable — what should change, or what specific fix would address it.
    • Include the trace URL.

Suggested thread template:

*Skill:* /app-creator
*Session:* $TRACE_URL
*Issue:* {what went wrong + suggested fix}
*Reproduction:* {action that triggered it}

Step 3 — Confirm with the user before posting

Always show both drafted messages, the target channel, and the trace URL to the user, and wait for explicit approval. Do not post until they confirm. This is non-negotiable.

Channel: poe-app-platform-feedback
Trace:   $TRACE_URL

[top-level — posted in channel; `{{currentUserSlackHandle}}` shown literal]
…drafted top-level message…

[thread reply]
…drafted thread reply…

If the user wants edits, revise and re-confirm.

Step 4 — Post

After explicit confirmation, run the post subcommand. Pass message bodies via env vars so multi-line text with quotes/backticks survives:

bash
TOP_TEXT="…final top-level…" \
THREAD_TEXT="…final thread reply…" \
"$SCRIPT" post

(Optional: CHANNEL=… to override the default poe-app-platform-feedback.)

Step 5 — Confirm to the user

Tell the user the message was posted and include the trace URL.

Notes

  • The dev-tools-api /upload, /sessions, and /post-message endpoints require a valid POE_API_KEY. If a call returns 401, your key may not yet be authorized for these endpoints — surface the error rather than retrying.
  • Any token in the complaint passes through to Slack as a literal — meta-feedback like "the placeholder broke" is safe.
  • Trace files are capped at 50 MB by the upload endpoint. If your session is larger, the upload will fail with a 413 — split or trim before retrying.