HARPA.AI
LIBRARYAPIGUIDESAI COMMANDSBLOG

🛠️  Software Design Workflow #3

Step-by-step creation of software design artifacts with iterative refinement.

Created by K D
Updated on Dec 27, 2024 22:53
Installed 11 times

How to Use

IMPORT COMMAND

Content

- label: 'STEP 1: Refine Initial Description'
  type: group
  steps:
    - type: ask
      param: description
      message: 'Please provide a brief description of the software you want to design:'
    - label: REFINE DESCRIPTION ITERATIVELY
      steps:
        - type: gpt
          prompt: >
            Refine the description: "{{description}}" and consider these user
            comments: "{{userComments}}". Output a more structured and clear
            description. Limit the response to 500 words unless requested
            otherwise.
          param: refinedDescription
        - message: >
            Refined Description:

            {{refinedDescription}}

            Provide comments or fragments to refine the description. If you're
            satisfied, type **Done**.
          param: userComments
          options:
            - label: Done
              value: done
            - $custom
          type: ask
        - condition: '{{userComments}} != done'
          type: jump
          to: REFINE DESCRIPTION ITERATIVELY
      type: group
    - label: FINALIZE REFINED DESCRIPTION
      type: calc
      func: set
      param: finalDescription
      value: '{{refinedDescription}}'
      format: ''
    - type: say
      message: 'finalDescription: {{finalDescription}}'
- label: 'STEP 2: GENERATE NAMES'
  steps:
    - prompt: >-
        Based on this description: "{{finalDescription}}", generate 5 creative
        and eye-catching software names as a JSON array. 

            - Respond with a JSON array consisting of five strings.
            - Write nothing other than the JSON.
            - Wrap your JSON response in a code block.

        JSON:
      param: nameList
      silent: true
      type: gpt
      isolated: true
    - type: calc
      func: extract-json
      to: nameList
      param: nameList
      index: ''
    - param: selectedIndex
      message: >
        The AI generated the following names:


        {{nameList}}


        Please enter the number corresponding to your preferred name (e.g., 1
        for the first name, 2 for the second, etc.):
      options:
        - label: 1️⃣
          value: '0'
        - label: 2️⃣
          value: '1'
        - label: 3️⃣
          value: '2'
        - label: 4️⃣
          value: '3'
        - label: 5️⃣
          value: '4'
        - $custom
      default: '1'
      vision:
        enabled: false
        mode: area
        hint: ''
        send: true
      type: ask
      optionsInvalid: false
    - type: group
      steps:
        - type: ask
          param: chosenName
          message: Please provide a custom name
          options: null
          default: ''
          vision:
            enabled: false
            mode: area
            hint: ''
            send: true
          condition: '{{selectedIndex-option}} = $custom'
      label: CUSTOM NAME
    - type: calc
      func: set
      param: chosenName
      format: ''
      value: '{{nameList.{{selectedIndex}}}}'
      condition: '{{selectedIndex-option}} != $custom'
  type: group
- label: 'STEP 3: Define User Personas'
  steps:
    - prompt: >
        Using the software description "{{finalDescription}}" and the name
        "{{chosenName}}", draft user personas for the software. Keep each
        persona concise and no longer than 1000 words unless requested
        otherwise.
      param: userPersonas
      type: gpt
    - label: REFINE PERSONAS ITERATIVELY
      steps:
        - message: >
            User Personas:

            {{userPersonas}}

            Provide comments to refine the personas. If you're satisfied, type
            **Done**.
          param: personaComments
          options:
            - label: Done
              value: done
            - $custom
          type: ask
        - condition: '{{personaComments}} != done'
          prompt: >
            Refine the user personas: "{{userPersonas}}" based on these
            comments: "{{personaComments}}".
          type: gpt
          param: userPersonas
        - condition: '{{personaComments}} != done'
          type: jump
          to: REFINE PERSONAS ITERATIVELY
      type: group
    - label: FINALIZE PERSONAS
      param: finalPersonas
      value: '{{userPersonas}}'
      type: calc
      func: set
      format: ''
  type: group
- label: 'STEP 4: Conduct Market and Competitive Analysis'
  steps:
    - prompt: >
        Perform a market and competitive analysis for the software named
        "{{chosenName}}" targeting these user personas: "{{finalPersonas}}". The
        analysis should include key insights about competitors and market
        trends.
      param: marketAnalysis
      type: gpt
    - label: REFINE MARKET ANALYSIS ITERATIVELY
      steps:
        - message: >
            Market Analysis:

            {{marketAnalysis}}

            Provide comments to refine the analysis. If you're satisfied, type
            **Done**.
          param: marketComments
          options:
            - label: Done
              value: done
            - $custom
          type: ask
        - condition: '{{marketComments}} != done'
          prompt: >
            Refine the market analysis: "{{marketAnalysis}}" based on these
            comments: "{{marketComments}}".
          type: gpt
          param: marketAnalysis
        - condition: '{{marketComments}} != done'
          type: jump
          to: REFINE MARKET ANALYSIS ITERATIVELY
      type: group
    - label: FINALIZE MARKET ANALYSIS
      param: finalMarketAnalysis
      value: '{{marketAnalysis}}'
      type: calc
      func: set
      format: ''
  type: group
- label: 'STEP 5: Create Pitch Deck'
  steps:
    - prompt: >
        Create an outline for a pitch deck based on the description
        "{{finalDescription}}", personas "{{finalPersonas}}", and analysis
        "{{finalMarketAnalysis}}". Limit the response to key bullet points.
      param: pitchDeck
      type: gpt
    - label: REFINE PITCH DECK ITERATIVELY
      steps:
        - message: >
            Pitch Deck Outline:

            {{pitchDeck}}

            Provide comments to refine the pitch deck. If you're satisfied, type
            **Done**.
          param: pitchDeckComments
          options:
            - label: Done
              value: done
            - $custom
          type: ask
        - condition: '{{pitchDeckComments}} != done'
          prompt: >
            Refine the pitch deck outline: "{{pitchDeck}}" based on these
            comments: "{{pitchDeckComments}}".
          type: gpt
          param: pitchDeck
        - condition: '{{pitchDeckComments}} != done'
          type: jump
          to: REFINE PITCH DECK ITERATIVELY
      type: group
    - label: FINALIZE PITCH DECK
      param: finalPitchDeck
      value: '{{pitchDeck}}'
      type: calc
      func: set
      format: ''
  type: group
- label: 'STEP 6: Outline User Flows'
  steps:
    - prompt: >
        Based on the personas "{{finalPersonas}}" and the description
        "{{finalDescription}}", outline user flows for the software.
      param: userFlows
      type: gpt
    - label: REFINE USER FLOWS ITERATIVELY
      steps:
        - message: >
            User Flows:

            {{userFlows}}

            Provide comments to refine the flows. If you're satisfied, type
            **Done**.
          param: flowComments
          options:
            - label: Done
              value: done
            - $custom
          type: ask
        - condition: '{{flowComments}} != done'
          prompt: >
            Refine the user flows: "{{userFlows}}" based on these comments:
            "{{flowComments}}".
          type: gpt
          param: userFlows
        - condition: '{{flowComments}} != done'
          type: jump
          to: REFINE USER FLOWS ITERATIVELY
      type: group
    - label: FINALIZE USER FLOWS
      param: finalUserFlows
      value: '{{userFlows}}'
      type: calc
      func: set
      format: ''
  type: group
- label: 'STEP 7: Develop Storyboards'
  steps:
    - prompt: |
        Create detailed storyboards for the user flows: "{{finalUserFlows}}".
      param: storyboards
      type: gpt
    - label: REFINE STORYBOARDS ITERATIVELY
      steps:
        - message: >
            Storyboards:

            {{storyboards}}

            Provide comments to refine the storyboards. If you're satisfied,
            type **Done**.
          param: storyboardComments
          options:
            - label: Done
              value: done
            - $custom
          type: ask
        - condition: '{{storyboardComments}} != done'
          prompt: >
            Refine the storyboards: "{{storyboards}}" based on these comments:
            "{{storyboardComments}}".
          type: gpt
          param: storyboards
        - condition: '{{storyboardComments}} != done'
          type: jump
          to: REFINE STORYBOARDS ITERATIVELY
      type: group
    - label: FINALIZE STORYBOARDS
      param: finalStoryboards
      value: '{{storyboards}}'
      type: calc
      func: set
      format: ''
  type: group
- label: 'STEP 8: Define System Functions and Pages'
  steps:
    - prompt: >
        Generate a detailed list of system functions and pages based on the
        storyboards "{{finalStoryboards}}".
      param: systemFunctions
      type: gpt
    - label: REFINE SYSTEM FUNCTIONS ITERATIVELY
      steps:
        - message: >
            System Functions:

            {{systemFunctions}}

            Provide comments to refine the functions. If you're satisfied, type
            **Done**.
          param: functionComments
          options:
            - label: Done
              value: done
            - $custom
          type: ask
        - condition: '{{functionComments}} != done'
          prompt: >
            Refine the system functions: "{{systemFunctions}}" based on these
            comments: "{{functionComments}}".
          type: gpt
          param: systemFunctions
        - condition: '{{functionComments}} != done'
          type: jump
          to: REFINE SYSTEM FUNCTIONS ITERATIVELY
      type: group
    - label: FINALIZE SYSTEM FUNCTIONS
      param: finalSystemFunctions
      value: '{{systemFunctions}}'
      type: calc
      func: set
      format: ''
  type: group
- label: 'STEP 9: Plan Development Sprints'
  steps:
    - prompt: >
        Plan development sprints with 10 phases based on the system functions
        "{{finalSystemFunctions}}".
      param: sprintPlan
      type: gpt
    - label: REFINE SPRINT PLAN ITERATIVELY
      steps:
        - message: >
            Sprint Plan:

            {{sprintPlan}}

            Provide comments to refine the plan. If you're satisfied, type
            **Done**.
          param: sprintComments
          options:
            - label: Done
              value: done
            - $custom
          type: ask
        - condition: '{{sprintComments}} != done'
          prompt: >
            Refine the sprint plan: "{{sprintPlan}}" based on these comments:
            "{{sprintComments}}".
          type: gpt
          param: sprintPlan
        - condition: '{{sprintComments}} != done'
          type: jump
          to: REFINE SPRINT PLAN ITERATIVELY
      type: group
    - label: FINALIZE SPRINT PLAN
      param: finalSprintPlan
      value: '{{sprintPlan}}'
      type: calc
      func: set
      format: ''
  type: group
- label: 'STEP 9A: ARCH AND COMPONENTS'
  steps:
    - prompt: >
        Recommend SPA/GUI layout and component architecture based on the system
        functions "{{finalSystemFunctions}}" and Sprint plan
        {{finalSprintPlan}}.
      param: archPlan
      type: gpt
    - label: REFINE ARCH PLAN ITERATIVELY
      steps:
        - message: >
            System Architecture Plan:

            {{archPlan}}

            Provide comments to refine the plan. If you're satisfied, type
            **Done**.
          param: archComments
          options:
            - label: Done
              value: done
            - $custom
          type: ask
        - condition: '{{archComments}} != done'
          prompt: >
            Refine the sprint plan: "{{archPlan}}" based on these comments:
            "{{archComments}}".
          type: gpt
          param: sprintPlan
        - condition: '{{sprintComments}} != done'
          type: jump
          to: REFINE ARCH PLAN ITERATIVELY
      type: group
    - label: FINALIZE ARCH PLAN
      param: finalArchPlan
      value: '{{archPlan}}'
      type: calc
      func: set
      format: ''
  type: group
- label: 'STEP 10: Finalize Workflow'
  steps:
    - message: >-
        🎉 Your software design workflow is complete! Below are the final
        outputs:


        - **Refined Description**:
          {{finalDescription}}

        - **Chosen Name**:
          {{chosenName}}

        - **User Personas**:
          {{finalPersonas}}

        - **Market and Competitive Analysis**:
          {{finalMarketAnalysis}}

        - **Pitch Deck Outline**:
          {{finalPitchDeck}}

        - **User Flows**:
          {{finalUserFlows}}

        - **Storyboards**:
          {{finalStoryboards}}

        - **System Functions and Pages**:
          {{finalSystemFunctions}}

        - **Development Sprint Plan**:
          {{finalSprintPlan}}

        - **System Architecture and GUI": 

        {{finalArchPlan}}
      type: say
    - message: >
        Do you want to save this output for future use? Select **Yes** to export
        as a file or **No** to finish.
      options:
        - label: 'Yes'
          value: export
        - label: 'No'
          value: done
      param: saveDecision
      type: ask
    - type: calc
      func: set
      param: final
      format: ''
      value: >-
        🎉 Your software design workflow is complete! Below are the final
        outputs:


        - **Refined Description**:
          {{finalDescription}}

        - **Chosen Name**:
          {{chosenName}}

        - **User Personas**:
          {{finalPersonas}}

        - **Market and Competitive Analysis**:
          {{finalMarketAnalysis}}

        - **Pitch Deck Outline**:
          {{finalPitchDeck}}

        - **User Flows**:
          {{finalUserFlows}}

        - **Storyboards**:
          {{finalStoryboards}}

        - **System Functions and Pages**:
          {{finalSystemFunctions}}

        - **Development Sprint Plan**:
          {{finalSprintPlan}}

        - **System Architecture and GUI": 
          {{finalArchPlan}}
    - condition: '{{saveDecision}} = export'
      format: markdown
      content: |
        ## Software Design Workflow Outputs

        ### Refined Description
        {{finalDescription}}

        ### Chosen Name
        {{chosenName}}

        ### User Personas
        {{finalPersonas}}

        ### Market and Competitive Analysis
        {{finalMarketAnalysis}}

        ### Pitch Deck Outline
        {{finalPitchDeck}}

        ### User Flows
        {{finalUserFlows}}

        ### Storyboards
        {{finalStoryboards}}

        ### System Functions and Pages
        {{finalSystemFunctions}}

        ### Development Sprint Plan
        {{finalSprintPlan}}
      filename: software_design_workflow_output.md
      type: export
      what: param
      param: final
    - message: >-
        Thank you for using the Software Design Workflow! Your outputs have been
        saved. 🚀
      type: say
  type: group
Notice: Please read before using

This automation command is created by a community member. HARPA AI team does not audit community commands.

Please review the command carefully and only install if you trust the creator.

Contact us
HomeUse CasesGuidesPrivacy PolicyTerms of Service
CAN WE STORE COOKIES?
Our website uses cookies for the purposes of accessibility and security. They also allow us to gather statistics in order to improve the website for you. More info: Privacy Policy