# Slack Submit > Get a Slack app through Slack Marketplace review. Paste your Slack app manifest (YAML or JSON) and what the app does, > answer a short interview, and the browser checks the scope table against the Slack Marketplace review rules; then the > metered runs write the per-scope justifications with the submission plan, or the fixes for a returned submission. > Built on the SkillSafe skill @samber/slack-app-directory-playbook, from samber/developer-platform-skills (MIT), by > Samuel Berthe. > Not affiliated with or endorsed by Slack. > Scope: a vendor's commercial Slack app going through Slack Marketplace review, or a listed app planning a change - not > listing copy, not a company's own internal apps, not an admin vetting another vendor's app, not Slack bot code. https://slack-submit.skillsafe.ai/ ## What is free - Parsing: the manifest as YAML (a careful subset - nested maps, lists of scalars and of maps, quoted strings, block scalars, comments) or JSON, with the line number of every parse error; display_information, features (bot user, slash commands, shortcuts, unfurl domains, App Home, workflow steps, the Assistant view), oauth_config (redirect URLs, bot, user and optional scopes) and settings (events, interactivity, org deploy, socket mode, token rotation, the function runtime), plus functions, workflows and outgoing domains. - The scope table: every scope with its token, required or optional, its class from a fixed set (ineligible, partner program only, enhanced review, standard), a feature note or "justification needs a feature", and what the page would do with it (keep, optional, drop). - The checks, each with an id, the skill's rule and pass, fix, fail, note or n/a: install_gate and weekly_users (rule 1); scope_features and optional_scopes (rule 2); ineligible_scopes, partner_scopes, enhanced_scopes, user_token and token_duplicates (rule 3); self_install, test_accounts and demo_video (rule 4); endorsement (rule 5); history_pilot, coded_workflow and unsuitable (eligibility); display_name and urls_public (environments as code); automation_billing and automation_history (automation platforms); test_commands, ai_disclosure, onboarding_help and pages (the packet); org_deploy and timeline (the review); token_rotation and listed_change (after listing). - The unsuitable-app screen, a fixed set of kinds read from what the app does and the manifest's descriptions: export or backup, bulk delete, sign-in only, a Slack client, training LLMs on Slack data, sentiment of individuals, money or crypto, scripts or terminal commands, a shared account, circumventing admin controls. A denial is not a hit; any hit, or a coded workflow, refuses the plan. - The install-gate menu, ranked: existing customers already asking for Slack as an unlisted pilot, design partners, staff or partner teams on their own paid workspaces; a launch inside three months promotes design partners. Sandboxes never count. - The review timeline counted from today by the browser clock: preliminary review, functional review and one returned round; a launch before the planned approval is flagged with "announce as coming to the Slack Marketplace". - Exports: the scope table (.csv, its justification column filled from a plan reply when one exists), the checks (.csv), the environment split for dev, staging and production (.txt), everything (.json), and the fixed manifest (manifest.fixed.yaml or .json, in the format pasted): every scope the page fails and every test slash command removed, nothing added, every other field kept; from a plan result it also removes the scopes the plan drops and moves its optional scopes to bot_optional or user_optional, with the list of changes shown beside it. - Saved apps keep a compact snapshot of the checks: reopening one, or pasting an app of the same name, shows what changed since it was saved (checks fixed, checks newly failing, scopes removed or added, the fail count). "Mark as resubmitted" logs the date and the review stage; the next fixes run then carries the previous round's fixes with the plan. - Every Slack figure the skill quotes carries a dagger: 10 active workspaces†, 28 days†, 10 weekly active users†, 1 request/minute† and 15 objects†, 10 business days†, 10 weeks†, 6 weeks†, 12 hours†, 10 days' written notice†, 2 business days†, the April 2026 AgentExchange merge†. † verify against current Slack Marketplace docs, because Slack changed its install gate twice in a year. ## The metered lanes Two tasks on gpt-terra, metered per run, routed by `task`. Input string fields: `task` (plan or fixes), `app`, `manifest`, `features`, `feedback` (fixes only: the returned review feedback), `carry` (fixes only: the plan's scope table, plus the previous round's fixes once a resubmission is logged) and `facts`. - `plan` replies with `summary`, `eligibility` (`verdict` eligible, not_yet or refused, `why`), `scopes` (`scope`, `token`, `required`, `justification`, `action` keep, optional or drop), `gate` (`rung` customers, partners or staff, `action`), `fixes` (`check`, `change`), `packet` (`item`, `owner`, `done`), `timeline` (`step`, `wait`), `footnote` and `caveats`. - `fixes` replies with `summary`, `points` (`n`, `feedback`, `fix`, `check`), `resubmit` (`stage` preliminary or functional, `queue`, `when`), `notes`, `footnote` and `caveats`. A reply stays on the page when the form changes after it ran, under an out-of-date banner, and its downloads and copies keep working; the plan's scope table copies one bare justification per row, and the fixes export a resubmission checklist (.md). The page holds every reply to its own facts: the plan keeps the page's eligibility (a moved verdict is put back), gives every manifest scope exactly one row and invents none, drops every scope the page fails, never repeats one justification for two scopes, keeps the gate menu's order and carries every fail check as a fix; the fixes answer at least as many points as the feedback numbers, name the review stage the feedback came from and its queue effect, and list every point in numbered notes that never argue and never ask to expedite; both carry the dagger on every Slack figure, the footnote, no URL, no backticks and no implied Slack endorsement. ## Links - API tutorial: https://slack-submit.skillsafe.ai/api.html - Source skill: https://skillsafe.ai/skill/@samber/slack-app-directory-playbook - Source repository: https://github.com/samber/developer-platform-skills