Knowledge Pack Files
SideButton Marketing Website Knowledge Pack Files
Browse the source files that power the SideButton Marketing Website MCP server knowledge pack.
sidebutton install sidebutton.com What This Is
Workflow management page for Fleet Control -- lists all registered workflows grouped by source pack, with enable/disable toggles, role badges, descriptions, slugs, step counts, source badges, and last-updated timestamps. Each workflow links to a detail page showing the full step definition including step types (terminal.open, terminal.run, poll), agent prompts, input parameters, and configuration. Workflows are YAML-defined automation templates that get dispatched to agents as jobs.
URL Patterns
| Pattern | Description |
|---|---|
/portal/workflows | Workflow list |
/portal/workflows/{id} | Workflow detail (by numeric ID) |
Browser tab title: List = "Workflows - SideButton Fleet", Detail = "{slug} - SideButton Fleet"
Page Structure
Workflow List (/portal/workflows)
+--[Sidebar]--+--[Main Content]------------------------------------------+
| | H1: "Workflows" |
| Workflows | "N workflows" |
| (active) | "SideButton Default Pack" (pack group header) |
| | |
| | WORKFLOW SOURCE UPDATED (column headers)|
| | |
| | [Toggle] [Badge] Title [default] Nm ago |
| | Description (truncated) |
| | slug N step |
| | ... |
+-------------+-----------------------------------------------------------+
Workflow Detail (/portal/workflows/{id})
+--[Sidebar]--+--[Main Content]------------------------------------------+
| | < Back to workflows |
| Workflows | |
| (active) | H1: Workflow Description [Toggle] Enabled |
| | slug N step Created date Updated date |
| | |
| | STEPS |
| | [dot] Step Name [Role Badge] |
| | Description text |
| | |
| | input params: key: {{input.key}} |
| | |
| | [terminal.open badge] Agent: Name {{entry_path}} |
| | [terminal.run badge] |
| | Agent prompt text (full instructions) |
| | |
| | [dot] Monitor task reports [poll badge] |
| | Poll description |
| | |
| | RECENT JOBS |
| | [dot] slug — {ticket_key or 'queued'} #ID time ago |
| | ... |
+-------------+-----------------------------------------------------------+
Key Elements
Workflow List
| Element | Selector / Ref | Notes |
|---|---|---|
| Page heading | heading "Workflows" | H1 |
| Workflow count | Below heading | "N workflows" |
| Pack group header | Below count | Pack source names joined by " · " — e.g. "SideButton Default Pack · venmate-skill-packs-main (2)". Shows all registered packs with workflow counts for non-default packs |
| Column headers | Above first row | "WORKFLOW", "SOURCE", "UPDATED" |
| Enable/disable toggle | button "Disable workflow {slug}" | Green toggle switch per row; toggles workflow enabled/disabled state. Button label always says "Disable workflow {slug}" regardless of current state (enabled or disabled) — cannot determine toggle state from accessibility tree |
| Workflow row | link (each workflow) | Clickable, navigates to /portal/workflows/{id} |
| Role badge: PM | Purple circle with "PM" | Project Management workflows |
| Role badge: QA | Purple circle with "QA" | Quality Assurance workflows |
| Role badge: SE | Green circle with "SE" | Software Engineering workflows |
| Role badge: SD | Orange circle with "SD" | Skill Discovery workflows |
| Role badge: OPS | Green circle with "OPS" | Operations workflows |
| Workflow title | Bold text | e.g. "PM Agent: Drive Ticket" |
| Workflow description | Grey text below title | Truncated with "..." if long |
| Workflow slug | Grey monospace text | e.g. "pm-drive" |
| Step count | Grey text | "N step" |
| Source badge | Grey pill | "default" for built-in workflows |
| Relative time | Right column | "Nm ago" or "Nh ago" |
Workflow Detail
| Element | Selector / Ref | Notes |
|---|---|---|
| Back link | link "Back to workflows" | Chevron left + text, returns to list |
| Workflow description (H1) | heading | H1 with full workflow description (NOT the short title) |
| Enable/disable toggle | button "Disable workflow" | Green toggle next to H1, shows "Enabled" or "Disabled" text. Button label always says "Disable workflow" regardless of current state — use visible "Enabled"/"Disabled" text to determine state, not button label |
| Slug | Monospace text | Workflow slug identifier |
| Step count | Text | "N step" |
| Created date | Text | "Created M/D/YYYY, H:MM:SS AM/PM" |
| Updated date | Text | "Updated M/D/YYYY, H:MM:SS AM/PM" |
| STEPS section | "STEPS" label (uppercase) | Contains all step definitions |
| Step indicator | Blue dot | Left of step name |
| Step name | Bold in step area | e.g. "PM Agent: Drive Ticket", "SE Agent: Implement Fix + PR" |
| Step role badge | [PM] / [QA] / [SE] / [SD] / [OPS] | Small role pill next to step name |
| Step description | Text below name | Workflow description repeated |
| Input params | key: {{input.key}} format | Template variables for job dispatch (e.g. ticket_url, hint) |
| Step type: terminal.open | Green/teal terminal.open badge | Opens terminal on agent, shows "Agent: {Name}" + {{entry_path}} |
| Step type: terminal.run | Red/coral terminal.run badge | Contains full agent prompt/instructions in dark code block |
| Step type: poll | poll badge | "Monitor task reports" with polling description |
| RECENT JOBS section | "RECENT JOBS" label (uppercase) below steps | List of recent job executions for this workflow (up to 10 shown) |
| Recent job row | link per job | Color-coded status dot + "slug — {ticket_key or 'queued'}" (bold) + #ID + relative time; links to /portal/jobs/{id} |
| Job status dot: running | Red/orange dot | Currently executing job |
| Job status dot: completed | Green dot | Successfully completed job |
| Job status dot: failed/cancelled | Grey dot | Failed, timed-out, or cancelled job |
Data Model
Workflow
| Field | Type | Description |
|---|---|---|
| id | number | Workflow ID (auto-increment, changes when workflows are re-registered; e.g. 259-270 as of 2026-04-02) |
| title | string | Short title (e.g. "PM Agent: Drive Ticket") — shown on list |
| description | string | Full description — shown as H1 on detail page and as subtext on list |
| slug | string | URL-safe identifier (e.g. "pm-drive") |
| role | string | "pm" / "qa" / "se" / "sd" / "ops" |
| enabled | boolean | Whether workflow is active (toggle state) |
| source | string | Source pack name (e.g. "default", "venmate-skill-packs-main") |
| step_count | number | Number of steps (always shows "1 step") |
| created_at | string (datetime) | Creation timestamp |
| updated_at | string (datetime) | Last update timestamp |
Workflow Step
| Field | Type | Description |
|---|---|---|
| name | string | Step display name (e.g. "SE Agent: Implement Fix + PR") |
| role | string | Step role identifier |
| description | string | Step description |
| type | string | "terminal.open" / "terminal.run" / "poll" |
| agent_name | string | Agent label for terminal steps (e.g. "Agent: SE Work") |
| path | string | Working directory — usually {{entry_path}} template variable; pull-repos uses fixed ~/workspace |
| prompt | string | Full agent prompt/instructions for terminal.run steps |
| input | object | Template input parameters ({{input.key}} syntax) |
Known Workflows (as of 2026-03-24)
| Slug | Role | Title | Has Inputs | Agent Name |
|---|---|---|---|---|
| pm-drive | PM | PM Agent: Drive Ticket | Yes (ticket_url, hint) | Agent: PM Drive Ticket |
| pm-sprint | PM | PM Agent: Sprint Lifecycle | Yes (hint) | Agent: PM Sprint Lifecycle |
| pull-repos | OPS | Ops: Pull All Repos | No | Agent: Pull All Repos |
| qa-followup | QA | QA: Re-review PR After Fixes | Yes (ticket_url, hint) | Agent: QA Re-review PR |
| qa-new-ticket | QA | QA: Test Live Site (New Ticket) | Yes (ticket_url, hint) | Agent: QA Test Live |
| qa-regression | QA | QA: Regression Test (Live Site) | Yes (ticket_url, hint, depth) | Agent: QA Regression (Live) |
| qa-validate | QA | QA: Review PR Fix | Yes (ticket_url, hint) | Agent: QA Review PR Fix |
| sd-coverage | SD | SD Agent: Fill Skill Module | Yes (hint) | Agent: SD Coverage |
| se-followup | SE | SE Agent: Apply Review Feedback | Yes (ticket_url, hint) | Agent: SE Followup |
| se-rca | SE | SE Agent: Root Cause Analysis | Yes (ticket_url, hint) | Agent: SE RCA |
| se-rca-fix | SE | SE Agent: RCA + Fix + PR | Yes (ticket_url, hint) | Agent: SE RCA+Fix |
| se-work | SE | SE Agent: Implement Fix + PR | Yes (ticket_url, hint) | Agent: SE Work |
States & Variations
| State | Trigger | Visual Indicator |
|---|---|---|
| List view | /portal/workflows | All workflows listed with toggles, role badges, source badges |
| Detail view | /portal/workflows/{id} | Full step definition with prompts |
| Workflow enabled | Default state | Green toggle, "Enabled" text on detail |
| Workflow disabled | Toggle clicked | Toggle off state, "Disabled" text on detail |
| With recent jobs | Workflow has been executed | "RECENT JOBS" section at bottom with job links |
| Without recent jobs | No executions yet | No recent jobs section shown |
| Workflow with standard inputs | Has ticket_url + hint params | Two input param lines below step description (most SE/QA workflows) |
| Workflow with hint only | Has hint param only | Single input param line (pm-sprint, sd-coverage) |
| Workflow with extra inputs | Has additional params beyond standard | e.g. qa-regression shows depth param alongside ticket_url and hint |
| Workflow without inputs | No input params (pull-repos) | No input params section |
| Recent jobs: running | Job currently executing | Red/orange status dot |
| Recent jobs: completed | Older finished jobs | Green status dot |
| Recent jobs: failed/cancelled | Timed-out, errored, or cancelled jobs | Grey status dot |
| Invalid workflow ID | Navigate to /portal/workflows/99999 | Redirects to workflow list (no error page) |
| Long description | Workflow with long description | Truncated with "..." on list, full text as H1 on detail |
| Long H1 in accessibility tree | Detail page with long description | H1 text truncated in accessibility snapshot (e.g. "Find the lowest-coverage module, explore it in the browser, improve its skill fi") — full text in page content |
| Multi-pack header | Multiple pack sources registered | Pack group header shows all pack names joined by " · " with counts for non-default packs |
| Toggle updates timestamp | Toggle enabled/disabled on any workflow | UPDATED column refreshes to "Just now" on list page |
Common Tasks
1. Browse workflows
- Navigate to
/portal/workflows - See all workflows grouped by pack ("SideButton Default Pack")
- Column headers: WORKFLOW, SOURCE, UPDATED
2. View workflow detail
- Click any workflow row (the
linkelement, not the toggle) - See full step definitions, input parameters, agent prompts
- Back link at top returns to list
3. Enable/disable a workflow
- On list page: click the toggle switch (left of role badge) for the target workflow
- On detail page: click the toggle next to the H1 heading
- Toggle text changes between "Enabled" / "Disabled"
4. Understand workflow steps
- On detail page, read the STEPS section
terminal.open= opens a terminal session on the agent at{{entry_path}}terminal.run= executes the agent prompt (main work instructions)poll= monitors for task completion (15s interval, 2h timeout)
5. View recent job history for a workflow
- On detail page, scroll to "RECENT JOBS" section
- Each row shows: color-coded status dot + "slug — {ticket_key or 'queued'}" + job ID + relative time
- Click any job row to navigate to
/portal/jobs/{id}
Tips
- Workflows are organized by role: PM (planning), QA (testing), SE (engineering), SD (skill discovery), OPS (operations)
- The
terminal.runstep contains the full agent prompt -- this is the main instruction set - Input parameters use
{{input.key}}template syntax and are filled at dispatch time {{entry_path}}in terminal.open is resolved at dispatch time based on agent configuration- Workflow IDs are numeric (not slugs) in the URL pattern
- Role badges are color-coded: PM/QA use purple circles, SE/OPS use green circles, SD uses orange
- The H1 on the detail page is the workflow description, not the short title
- Source badges show "default" for built-in workflows from SideButton Default Pack
- Browser tab title on detail pages uses the workflow slug (e.g. "pm-drive - SideButton Fleet")
Gotchas
- H1 is the description, not the title: The detail page H1 shows the full description text (e.g. "Drive a ticket to completion — plan, dispatch SE/QA, track PRs, merge, validate, close. Idempotent."), not the short title ("PM Agent: Drive Ticket"). The short title appears as the step name instead.
- "Enabled" not "Active": Status is shown as a toggle switch with "Enabled"/"Disabled" text, not a green "Active" badge as in older versions
- Toggle vs row click: The enable/disable toggle and the workflow row link are separate clickable elements — clicking the toggle does not navigate to the detail page
- URL uses numeric ID: Workflow detail URL uses numeric IDs (
/portal/workflows/247not/portal/workflows/pm-drive) - Invalid ID redirects: Navigating to a non-existent workflow ID (e.g.
/portal/workflows/99999) silently redirects to the workflow list — no error page or toast - No create/edit UI: The workflow list page has no "New Workflow" button -- workflows are managed via YAML files and the SideButton CLI, not through the portal UI
- Step type badges are color-coded:
terminal.open= green/teal,terminal.run= red/coral,poll= grey — all monospace font - Full prompts visible: The detail page shows the complete agent prompt text for
terminal.runsteps in a dark code block — these can be very long - No filter/search: Unlike Jobs and Queue, the workflow list has no status filter tabs, search box, or dropdown filters
- All workflows show "1 step": The step count shows "1 step" even though workflows have multiple sub-steps (terminal.open, terminal.run, poll) — this represents one logical agent task
- Recent Jobs format: Only appears on detail page for workflows that have been executed; shows up to 10 jobs. Format is "slug — {ticket_key or 'queued'}" with color-coded dots (red/orange=running, green=completed, grey=failed/cancelled). The text after "—" shows the job source label, NOT the execution status — status is indicated only by dot color. Each row links to
/portal/jobs/{id} - Descriptions truncated on list: Long workflow descriptions are truncated with "..." on the list page; full text shown on detail page as H1
- entry_path is a template variable: The terminal.open path shows
{{entry_path}}which is resolved at dispatch time — except pull-repos which uses the fixed path~/workspace - Input params vary by workflow: Not all workflows use ticket_url + hint. pm-sprint and sd-coverage only have
hint; qa-regression adds adepthparam; pull-repos has no inputs at all - Agent names are unique per workflow: Each workflow shows a distinct agent name in terminal.open (e.g. "Agent: SE Work", "Agent: QA Regression (Live)") — these correspond to agent configurations in Fleet Control
- Toggle button label never changes: On the list page, the button always reads
"Disable workflow {slug}"and on the detail page"Disable workflow"— regardless of whether the workflow is currently enabled or disabled. You cannot determine the toggle state from the accessibility tree; use the visible "Enabled"/"Disabled" text or screenshot instead - Toggle updates updated_at: Toggling enabled/disabled immediately updates the workflow's
updated_attimestamp, which shows as "Just now" in the UPDATED column - Multi-pack header: The pack group header now shows all registered pack sources joined by " · " (e.g. "SideButton Default Pack · venmate-skill-packs-main (2)") with counts for non-default packs. Previously documented as only "SideButton Default Pack"
- Workflow IDs are dynamic: IDs change when workflows are re-registered (e.g. after reinstall). Don't hardcode IDs in tests — navigate via list page click instead
- Long H1 truncation in accessibility tree: Detail page H1 for workflows with long descriptions gets truncated in the accessibility snapshot. Use
snapshot(includeContent=true)to get the full text from page content - Recent jobs ordered by time, not ID: Recent jobs are sorted by most recent execution time, not by job ID. IDs may appear out of sequence within the same time period