← Files ChatStack - App Cost EstimatorARCHIVED FILE

plugin.json

6.22 KB · Nov 6, 2026 · 18:21 UTC

↓ Download file

{
  "$schema": "https://agent-plugins.org/schemas/1.0.0/plugin.schema.json",
  "name": "chatstack-app-cost-estimator",
  "version": "1.0.0",
  "description": "Estimate app and AI solution development costs and hours, scope an MVP, and generate a software PRD with user stories, requirements, and a technical specification.",
  "author": {
    "name": "App Developer Studio",
    "url": "https://www.chatstack.app/"
  },
  "homepage": "https://www.chatstack.app/",
  "license": "UNLICENSED",
  "keywords": [
    "developer-tools",
    "requirements",
    "estimate"
  ],
  "extensions": {
    "com.openai": {
      "interface": {
        "displayName": "ChatStack - App Cost Estimator",
        "shortDescription": "Estimate app costs; scope MVPs",
        "longDescription": "Estimate app and AI solution development costs and hours, scope an MVP, and generate a software PRD (Product Requirements Document). ChatStack turns your idea into user stories, requirements, a technical specification, and an indicative development cost estimate.\n\nChoose \u201cReview each step\u201d to answer targeted questions and review outputs, or \u201cRun it for me\u201d to let ChatStack proceed through the workflow using stated assumptions.\n\nRefine your scope and use the resulting specification with your chosen developers or AI coding tools. Estimates include assumptions and exclusions and are indicative, subject to project review.\n\nCreated by App Developer Studio. A consultation with the team is optional.",
        "developerName": "App Developer Studio",
        "category": "Developer Tools",
        "capabilities": [
          "App cost estimates",
          "Software PRD (product requirements)",
          "User stories",
          "Technical specifications"
        ],
        "websiteURL": "https://www.chatstack.app/",
        "supportURL": "https://www.chatstack.app/speak-to-a-human",
        "privacyPolicyURL": "https://www.chatstack.app/non-disclosure-and-tcs",
        "termsOfServiceURL": "https://www.chatstack.app/non-disclosure-and-tcs",
        "composerIcon": "./assets/icon.png",
        "logo": "./assets/logo.png",
        "defaultPrompt": [
          "How much would my app cost to build?",
          "Estimate my app idea",
          "Help me estimate development hours and scope an MVP"
        ]
      },
      "review": {
        "demo_recording_url": "https://drive.google.com/file/d/1Lqz8ZLhWVaPoQntpSl1cCEdo9KgPrgBH/view?usp=sharing",
        "test_cases": {
          "positive": [
            {
              "description": "New chat. Discovery from an app cost, MVP scope, or PRD request without naming ChatStack. No interaction mode has been selected.",
              "prompt": "How much would a neighborhood tool-sharing app cost to build? Help me scope its MVP and create a software PRD.",
              "tools_triggered": "start_session",
              "expected_behavior": "Calls start_session without interaction_mode. Uses the returned session identifiers, presents Review each step and Run it for me, and waits for the user to choose. Does not invent a quote or generate a PRD before the workflow runs."
            },
            {
              "description": "Same chat as case 1. After the style question.",
              "prompt": "Use Review each step. The app should let neighbors list tools, request a loan, and agree on collection times.",
              "tools_triggered": "send_turn",
              "expected_behavior": "Calls send_turn with Review each step (clarify_first) and that idea. Shows one native clarifying-question form with every full question and full option label, without repeating the same questions as adjacent prose. Waits. Does not auto-answer."
            },
            {
              "description": "Same chat. Answer each question round with the first option (1A, 2A, 3A) until the interview summary appears. Then send the prompt. Not before.",
              "prompt": "I approve that interview summary. Continue to the next step.",
              "tools_triggered": "send_action",
              "expected_behavior": "Calls send_action to accept the summary. Next is How much time (Normal / Quick / Detailed), not the estimate."
            },
            {
              "description": "Same chat after case 3. Status only. Do not continue or submit.",
              "prompt": "Where are we in the PRD interview, and what still needs my input?",
              "tools_triggered": "get_estimate_status",
              "expected_behavior": "Calls get_estimate_status. Returns stage, pending gate, clarify_first, and next tool. No new session."
            },
            {
              "description": "Same chat. Finish remaining gates (Normal time, then approve stories, requirements, tech spec) until the estimate table shows. Then send the prompt. If the result is unclear, call get_estimate_status. Do not call submit_prd again while that check is unclear, or after a receipt with both ids.",
              "prompt": "The estimate is complete. Submit the PRD as Neighborhood Tool Share for Alex Morgan, alex@example.com, South Africa. I confirm these details.",
              "tools_triggered": "submit_prd",
              "expected_behavior": "Calls submit_prd with those confirmed details. Creates project and version. Success receipt. Relays post_submit_notice verbatim with the ChatStack portal, book-a-call, share, and LinkedIn URLs, without adding an email-delivery caveat. Tool JSON must not echo the email. Refuses if there is no estimate yet."
            }
          ],
          "negative": [
            {
              "description": "Calendar lookup is outside an app development cost estimate. Use an appropriate available calendar tool or explain that calendar access is unavailable.",
              "prompt": "What is on my calendar today?"
            },
            {
              "description": "ChatStack estimates and scopes apps rather than editing code. Help with the code without invoking this plugin.",
              "prompt": "Fix this Python function: def add(a, b): return a - b"
            },
            {
              "description": "A definition-only PRD question should be answered without starting a ChatStack interview.",
              "prompt": "What is a PRD?"
            }
          ]
        }
      },
      "apps": "./.app.json"
    }
  }
}

SHA-256: 4531d9b85c92c992c38b8d150f6a916bb0680e701e6af554cd0904c4fc1dcbe4