PageSourceSearch

https://help.revelry.ai/assets/js/31b76d9f.e7536e88.js

js revelry.ai collected 2026-10-05 14:55:35 UTC 14,053 bytes, 1 lines download raw bytes

1"use strict";(globalThis.webpackChunkrevelry_ai_docsite||=[]).push([[2957],{6315(e,n,r){r.r(n),r.d(n,{assets:()=>a,contentTitle:()=>o,default:()=>h,frontMatter:()=>t,metadata:()=>s,toc:()=>d});const s=JSON.parse('{"id":"workflows/creating-workflows","title":"Creating a Workflow","description":"This guide walks you through building your first workflow in Revelry AI.","source":"@site/docs/workflows/creating-workflows.md","sourceDirName":"workflows","slug":"/workflows/creating-workflows","permalink":"/docs/workflows/creating-workflows","draft":false,"unlisted":false,"tags":[],"version":"current","sidebarPosition":2,"frontMatter":{"sidebar_label":"Creating Workflows","sidebar_position":2},"sidebar":"tutorialSidebar","previous":{"title":"Overview","permalink":"/docs/workflows/workflows-overview"},"next":{"title":"Workflow Runs","permalink":"/docs/workflows/workflow-runs"}}');var l=r(4848),i=r(8453);const t={sidebar_label:"Creating Workflows",sidebar_position:2},o="Creating a Workflow",a={},d=[{value:"Prerequisites",id:"prerequisites",level:2},{value:"Step 1: Create Skills",id:"step-1-create-skills",level:2},{value:"Step 2: Navigate to Workflows",id:"step-2-navigate-to-workflows",level:2},{value:"Step 3: Build Your Workflow",id:"step-3-build-your-workflow",level:2},{value:"Add Steps in Sequence",id:"add-steps-in-sequence",level:3},{value:"Map Inputs and Parameters",id:"map-inputs-and-parameters",level:3},{value:"Configure Data Flow",id:"configure-data-flow",level:3},{value:"Step 4: Save Your Workflow",id:"step-4-save-your-workflow",level:2},{value:"Step 5: Test Your Workflow",id:"step-5-test-your-workflow",level:2},{value:"Example: Simple PRD Generator",id:"example-simple-prd-generator",level:2},{value:"Best Practices",id:"best-practices",level:2},{value:"Start Simple",id:"start-simple",level:3},{value:"Use Clear Naming",id:"use-clear-naming",level:3},{value:"Build in Validation",id:"build-in-validation",level:3},{value:"Test Skills First",id:"test-skills-first",level:3},{value:"Common Patterns",id:"common-patterns",level:2},{value:"Research \u2192 Generate \u2192 Refine",id:"research--generate--refine",level:3},{value:"Gather \u2192 Analyze \u2192 Report",id:"gather--analyze--report",level:3},{value:"Template \u2192 Populate \u2192 Validate",id:"template--populate--validate",level:3},{value:"Next Steps",id:"next-steps",level:2}];function c(e){const n={a:"a",code:"code",h1:"h1",h2:"h2",h3:"h3",header:"header",li:"li",ol:"ol",p:"p",pre:"pre",strong:"strong",ul:"ul",...(0,i.R)(),...e.components};return(0,l.jsxs)(l.Fragment,{children:[(0,l.jsx)(n.header,{children:(0,l.jsx)(n.h1,{id:"creating-a-workflow",children:"Creating a Workflow"})}),"\n",(0,l.jsx)(n.p,{children:"This guide walks you through building your first workflow in Revelry AI."}),"\n",(0,l.jsx)(n.h2,{id:"prerequisites",children:"Prerequisites"}),"\n",(0,l.jsx)(n.p,{children:"Before creating a workflow, you need to have skills ready. Each workflow step maps to a skill."}),"\n",(0,l.jsx)(n.p,{children:(0,l.jsx)(n.strong,{children:"Why skills first?"})}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsx)(n.li,{children:"Each workflow step requires a specific prompt"}),"\n",(0,l.jsx)(n.li,{children:"Skills define the inputs and outputs for each step"}),"\n",(0,l.jsx)(n.li,{children:"Testing skills individually ensures quality before assembly"}),"\n"]}),"\n",(0,l.jsx)(n.h2,{id:"step-1-create-skills",children:"Step 1: Create Skills"}),"\n",(0,l.jsx)(n.p,{children:"Create the skills you'll use for each step:"}),"\n",(0,l.jsxs)(n.ol,{children:["\n",(0,l.jsxs)(n.li,{children:["Navigate to ",(0,l.jsx)(n.strong,{children:"Tools > Skills"})]}),"\n",(0,l.jsxs)(n.li,{children:["Click ",(0,l.jsx)(n.strong,{children:"Create Skill"})]}),"\n",(0,l.jsxs)(n.li,{children:["Define the prompt for each workflow step:","\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.strong,{children:"Step 1 Example"}),': "Gather requirements from documents"']}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.strong,{children:"Step 2 Example"}),': "Generate PRD draft based on requirements"']}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.strong,{children:"Step 3 Example"}),': "Quality check and finalize PRD"']}),"\n"]}),"\n"]}),"\n",(0,l.jsx)(n.li,{children:"Define inputs and parameters for each skill"}),"\n",(0,l.jsx)(n.li,{children:"Test skills individually before building your workflow"}),"\n"]}),"\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:"Tip:"})," Start with 2-3 skills for a simple workflow. You can add more complexity later."]}),"\n",(0,l.jsx)(n.h2,{id:"step-2-navigate-to-workflows",children:"Step 2: Navigate to Workflows"}),"\n",(0,l.jsxs)(n.p,{children:["Click ",(0,l.jsx)(n.strong,{children:"Tools"})," in the left navigation, then the ",(0,l.jsx)(n.strong,{children:"Workflows"})," tab."]}),"\n",(0,l.jsxs)(n.p,{children:["Click ",(0,l.jsx)(n.strong,{children:"Create Workflow"})," to open the workflow builder."]}),"\n",(0,l.jsx)(n.h2,{id:"step-3-build-your-workflow",children:"Step 3: Build Your Workflow"}),"\n",(0,l.jsx)(n.p,{children:"Use the workflow builder to configure your workflow:"}),"\n",(0,l.jsx)(n.h3,{id:"add-steps-in-sequence",children:"Add Steps in Sequence"}),"\n",(0,l.jsxs)(n.ol,{children:["\n",(0,l.jsxs)(n.li,{children:["Click ",(0,l.jsx)(n.strong,{children:"Add Step"})]}),"\n",(0,l.jsx)(n.li,{children:"Select a skill for this step"}),"\n",(0,l.jsx)(n.li,{children:"Map inputs from previous steps or workflow inputs"}),"\n",(0,l.jsx)(n.li,{children:"Configure any step-specific parameters"}),"\n",(0,l.jsx)(n.li,{children:"Repeat for each step in your workflow"}),"\n"]}),"\n",(0,l.jsx)(n.h3,{id:"map-inputs-and-parameters",children:"Map Inputs and Parameters"}),"\n",(0,l.jsx)(n.p,{children:"Define how data flows through your workflow:"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.strong,{children:"Workflow inputs"})," - Variables provided when triggering the workflow"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.strong,{children:"Step inputs"})," - Data from previous steps or workflow inputs"]}
1),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.strong,{children:"Step outputs"})," - Results that can be used by subsequent steps"]}),"\n"]}),"\n",(0,l.jsx)(n.p,{children:(0,l.jsx)(n.strong,{children:"Example workflow:"})}),"\n",(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{children:"Step 1: Research (Input: topic) \u2192 Output: research_data\nStep 2: Generate (Input: research_data) \u2192 Output: draft_content\nStep 3: Refine (Input: draft_content) \u2192 Output: final_artifact\n"})}),"\n",(0,l.jsx)(n.h3,{id:"configure-data-flow",children:"Configure Data Flow"}),"\n",(0,l.jsx)(n.p,{children:"Specify how information moves between steps:"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsx)(n.li,{children:"Use step outputs as inputs for subsequent steps"}),"\n",(0,l.jsx)(n.li,{children:"Pass workflow-level inputs to any step"}),"\n",(0,l.jsx)(n.li,{children:"Chain steps together logically"}),"\n"]}),"\n",(0,l.jsx)(n.h2,{id:"step-4-save-your-workflow",children:"Step 4: Save Your Workflow"}),"\n",(0,l.jsx)(n.p,{children:"Before saving, review your configuration:"}),"\n",(0,l.jsxs)(n.ol,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.strong,{children:"Review all steps"})," - Verify the sequence makes sense"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.strong,{children:"Check input mapping"})," - Ensure data flows correctly"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.strong,{children:"Provide a clear name"})," - Describe what the workflow does","\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.strong,{children:"Good"}),': "PRD Generator with QA"']}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.strong,{children:"Less helpful"}),': "Workflow 1"']}),"\n"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.strong,{children:"Associate with project(s)"})," - Select relevant projects"]}),"\n",(0,l.jsxs)(n.li,{children:["Click ",(0,l.jsx)(n.strong,{children:"Save Workflow"})]}),"\n"]}),"\n",(0,l.jsx)(n.h2,{id:"step-5-test-your-workflow",children:"Step 5: Test Your Workflow"}),"\n",(0,l.jsx)(n.p,{children:"Before using your workflow for production:"}),"\n",(0,l.jsxs)(n.ol,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.strong,{children:"Trigger a test execution"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsx)(n.li,{children:"Provide sample inputs"}),"\n",(0,l.jsx)(n.li,{children:"Watch the workflow execute step-by-step"}),"\n"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.strong,{children:"Review generated artifacts"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsx)(n.li,{children:"Check output quality"}),"\n",(0,l.jsx)(n.li,{children:"Verify all steps completed successfully"}),"\n"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.strong,{children:"Refine as needed"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsx)(n.li,{children:"Adjust skills"}),"\n",(0,l.jsx)(n.li,{children:"Modify input mappings"}),"\n",(0,l.jsx)(n.li,{children:"Add or remove steps"}),"\n"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.strong,{children:"Test again"})," until you're satisfied"]}),"\n"]}),"\n",(0,l.jsx)(n.h2,{id:"example-simple-prd-generator",children:"Example: Simple PRD Generator"}),"\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:"Workflow goal:"})," Generate a Product Requirements Document with built-in quality checks"]}),"\n",(0,l.jsx)(n.p,{children:(0,l.jsx)(n.strong,{children:"Skills needed:"})}),"\n",(0,l.jsxs)(n.ol,{children:["\n",(0,l.jsx)(n.li,{children:'"Requirements Gatherer" - Extract requirements from documents'}),"\n",(0,l.jsx)(n.li,{children:'"PRD Generator" - Create PRD from requirements'}),"\n",(0,l.jsx)(n.li,{children:'"Quality Checker" - Validate PRD completeness'}),"\n"]}),"\n",(0,l.jsx)(n.p,{children:(0,l.jsx)(n.strong,{children:"Workflow configuration:"})}),"\n",(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{children:'Name: "PRD Generator with QA"\nProject: "Product Management"\n\nStep 1: Requirements Gatherer\n  - Input: product_name (workflow input)\n  - Input: feature_description (workflow input)\n  - MCP Tools: Enabled (query documents)\n  - Output: requirements_list\n\nStep 2: PRD Generator\n  - Input: requirements_list (from Step 1)\n  - Input: product_name (workflow input)\n  - Output: prd_draft\n\nStep 3: Quality Checker\n  - Input: prd_draft (from Step 2)\n  - Input: requirements_list (from Step 1)\n  - Output: final_prd (artifact)\n'})}),"\n",(0,l.jsx)(n.h2,{id:"best-practices",children:"Best Practices"}),"\n",(0,l.jsx)(n.h3,{id:"start-simple",children:"Start Simple"}),"\n",(0,l.jsx)(n.p,{children:"Begin with 2-3 steps before adding complexity. Get the basic workflow working, then enhance."}),"\n",(0,l.jsx)(n.h3,{id:"use-clear-naming",children:"Use Clear Naming"}),"\n",(0,l.jsx)(n.p,{children:"Name each step descriptively:"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.strong,{children:"Good"}),': "Gather Requirements", "Generate Draft", "QA Check"']}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.strong,{children:"Less helpful"}),': "Step 1", "Step 2", "Step 3"']}),"\n"]}),"\n",(0,l.jsx)(n.h3,{id:"build-in-validation",children:"Build in Validation"}),"\n",(0,l.jsx)(n.p,{children:"Add quality check steps between major stages:"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsx)(n.li,{children:"Verify data gathered before generation"}),"\n",(0,l.jsx)(n.li,{children:"Check draft quality before finalization"}),"\n",(0,l.jsx)(n.li,{children:"Validate outputs meet requirements"}),"\n"]}),"\n",(0,l.jsx)(n.h3,{id:"test-skills-first",children:"Test Skills First"}),"\n",(0,l.jsx)(n.p,{children:"Always test individual skills before adding them to workflows. This ensures each step works correctly in isolation."}),"\n",(0,l.jsx)(n.h2,{id:"common-patterns",children:"Common Patterns"}),"\n",(0,l.jsx)(n.h3,{id:"research--generate--refine",children:"Research \u2192 Generate \u2192 Refine"}),"\n",(0,l.jsxs)(n.ol,{children:["\n",(0,l.jsx)(n.li,{children:"Gather information from multiple sources"}),"\n",(0,l.jsx)(n.li,{children:"Generate content based on research"}),"\n",(0,l.jsx)(n.li,{children:"Refine and validate the output"}),"\n"]}),"\n",(0,l.jsx)(n.h3,{id:"gather--analyze--report",children:"Gather \u2192 Analyze \u2192 Report"}),"\n",(0,l.jsxs)(n.ol,{children:["\n",(0,l.jsx)(n.li,{children:"Collect data from documents and tools"}),"\n",(0,l.jsx)(n.li,{children:"Analyze patterns and insights"}),"\n",(0,l.jsx)(n.li,{children:"Generate formatted report"}),"\n"]}
1),"\n",(0,l.jsx)(n.h3,{id:"template--populate--validate",children:"Template \u2192 Populate \u2192 Validate"}),"\n",(0,l.jsxs)(n.ol,{children:["\n",(0,l.jsx)(n.li,{children:"Load template structure"}),"\n",(0,l.jsx)(n.li,{children:"Fill template with dynamic content"}),"\n",(0,l.jsx)(n.li,{children:"Verify all sections are complete"}),"\n"]}),"\n",(0,l.jsx)(n.h2,{id:"next-steps",children:"Next Steps"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.strong,{children:"Run your workflow:"})," ",(0,l.jsx)(n.a,{href:"/docs/workflows/workflow-runs",children:"Workflow Runs"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.strong,{children:"Learn about MCP tools:"})," ",(0,l.jsx)(n.a,{href:"/docs/chat/mcp-tools",children:"MCP Tools"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.strong,{children:"Compare approaches:"})," ",(0,l.jsx)(n.a,{href:"/docs/artifacts/creating-artifacts",children:"Creating Artifacts"})]}),"\n"]})]})}function h(e={}){const{wrapper:n}={...(0,i.R)(),...e.components};return n?(0,l.jsx)(n,{...e,children:(0,l.jsx)(c,{...e})}):c(e)}},8453(e,n,r){r.d(n,{R:()=>t,x:()=>o});var s=r(6540);const l={},i=s.createContext(l);function t(e){const n=s.useContext(i);return s.useMemo(function(){return"function"==typeof e?e(n):{...n,...e}},[n,e])}function o(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(l):e.components||l:t(e.components),s.createElement(i.Provider,{value:n},e.children)}}}]);

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.