
bifrost-vibecode-debugger
by jackmusick
SKILL.md
name: bifrost-vibecode-debugger description: "Debug and improve the Bifrost vibe coding experience. Use this skill when working on Bifrost platform development in Claude Code where you have access to Bifrost source code. Helps identify system bugs vs documentation issues, fix the right thing, and ensure end users have a smooth MCP-only experience."
Bifrost Vibecode Debugger
You are debugging and improving the Bifrost vibe coding experience. You have access to both the Bifrost MCP server (like end users) and the Bifrost source code (unlike end users).
Your Mission
End users will build Bifrost artifacts using only MCP tools and documentation. Your job is to:
- Build things using MCP tools exactly as an end user would
- When things break, identify WHY and fix the right thing
- Ensure end users won't hit the same issues
Critical: Two Types of Failures
Type 1: System Bug
The Bifrost backend has an actual bug.
Example: You create a workflow, and it throws a timezone exception because a database column has the wrong type.
Action: Fix the source code
- Stop the current task
- Find the bug in Bifrost source code
- Fix it
- Restart services:
docker compose restart bifrost-server(or relevant service) - Verify the fix
- Resume original task
Type 2: Documentation/Schema Misled You
You called the MCP tool incorrectly because the docs or schema were wrong or unclear.
Example: You include a priority field when creating a workflow because get_workflow_schema mentioned it, but that field doesn't actually exist.
Action: Recommend documentation updates
- Stop the current task
- Identify exactly what was misleading
- Note the specific file/tool that needs updating
- Propose the fix (but don't necessarily implement it now)
- Work around the issue to continue
- At end of session, summarize all doc recommendations
This distinction matters because end users can't fix system bugs, but they WILL be misled by bad documentation.
MCP Tools Reference
Discovery Tools
list_workflows- List all registered workflows (filter by query, category, or type)get_workflow- Get detailed metadata for a specific workflowget_workflow_schema- Documentation about workflow decorators and structureget_sdk_schema- Full SDK documentation (modules, decorators, error classes) - generated from sourcelist_integrations- Show available integrations and auth statuslist_forms- List all forms with URLsget_form_schema- Documentation about form structure and field typesget_data_provider_schema- Documentation about data provider patternslist_apps- List App Builder applicationsget_app- Get app metadata and page list (NOT full components)get_app_schema- Documentation about app structure and componentssearch_knowledge- Search the Bifrost knowledge base
Note: Data providers are workflows with type='data_provider'. Use list_workflows to find them.
Agent Tools
list_agents- List all accessible agentsget_agent- Get agent details by ID or namecreate_agent- Create a new AI agent with system promptupdate_agent- Update agent propertiesdelete_agent- Soft-delete an agent (deactivate)get_agent_schema- Documentation about agent structure and channels
Organization Tools (Platform Admin Only)
list_organizations- List all organizations in the platformget_organization- Get organization details by ID or slugcreate_organization- Create a new organization
Table Tools
list_tables- View tables (filtered by org for non-admins)get_table- Get table details and schemacreate_table- Create tables with explicit scope (platform admin only)update_table- Update table properties including scope (platform admin only)get_table_schema- Documentation about table structure and column types
Creation Tools (Auto-Validating)
create_workflow- Create workflow, tool, or data provider (validates automatically)create_form- Create a form (validates automatically, supports scope param)create_app- Create an app (validates automatically, supports scope param)
App Builder Tools
See App Builder Tool Hierarchy section below for granular app management tools.
File Operations
list_files- List files and directories in workspaceread_file- Read a file from workspacewrite_file- Write content to a file (for non-platform artifacts)delete_file- Delete a file or directorysearch_files- Search for text patterns across filescreate_folder- Create a new folder
Execution Tools
execute_workflow- Execute a workflow by IDlist_executions- List recent executionsget_execution- Get execution details and logs
Artifact Types
| Artifact | Creation Method | Schema Tool | Notes |
|---|---|---|---|
| Workflow | create_workflow | get_workflow_schema | Auto-validates |
| Tool | create_workflow | get_workflow_schema | Auto-validates |
| Data Provider | create_workflow | get_data_provider_schema | Auto-validates |
| Form | create_form | get_form_schema | Auto-validates |
| App | App-level tools | get_app_schema | See tool hierarchy |
| Agent | create_agent | get_agent_schema | Configure AI agents |
Development Process
- Read the schema - Use appropriate schema tool to understand structure
- Explore patterns - Use
list_workflows+get_workflowfor workflow metadata, orexecute_workflowto test behavior. File tools (list_files,read_file) are for YOUR workspace files, not for reading existing platform workflows. - Check dependencies - Use
list_integrationsto verify integrations exist - Create the artifact - Use
create_workflow,create_form, or app tools (auto-validates) - Test - Use
execute_workflowfor workflows/tools, verify apps render correctly
Important: The path field in workflow metadata (e.g., features/crm/workflows/clients.py) is informational only - it shows where the workflow was registered from. Workflow source code is NOT accessible via MCP file tools.
Creation tools auto-validate. Always test execution before declaring something ready.
App Builder Tool Hierarchy
Apps are built in pieces, NOT as a single JSON blob. This enables precise, targeted changes.
App Level
list_apps- List all apps with page countscreate_app- Create app metadata (name, description)get_app- Get app metadata and page list (NOT full components)update_app- Update app settings (name, description, navigation)publish_app- Publish all draft pages to live (only when user requests)
Page Level
create_page- Add a new page to an appget_page- Get page with full component treeupdate_page- Update page settings/layoutdelete_page- Remove a page
Component Level
list_components- List components on a page (summaries only)create_component- Add component to a pageget_component- Get component with full propsupdate_component- Update component props/settingsdelete_component- Remove componentmove_component- Reposition component
Draft Mode
Apps stay in draft until explicitly published. Preview at /apps/{slug}?draft=true.
DO NOT publish automatically - let users preview and test first.
App Layout Properties
Component Width
All components support a width property:
"auto"(default) - Natural size"full"- Full width of container"1/2","1/3","1/4","2/3","3/4"- Fractional widths
Layout Gap Defaults
Layouts have sensible gap defaults (set gap: 0 explicitly for no gap):
column: 16px defaultrow: 8px defaultgrid: 16px default
Layout maxWidth
Constrains the max-width of layout containers. Use for form pages to prevent stretching:
"sm"- 384px"md"- 448px"lg"- 512px (recommended for forms)"xl"- 576px"2xl"- 672px"full"/"none"- no constraint (default)
IMPORTANT: For pages with forms (create/edit pages), ALWAYS use maxWidth: "lg" on the root column layout.
Advanced Layout Features (NEW)
Scrollable Containers:
{
"type": "column",
"maxHeight": 400,
"overflow": "auto",
"children": [...]
}
Sticky Positioning:
{
"type": "row",
"sticky": "top",
"stickyOffset": 0,
"children": [...]
}
Custom Styling:
{
"type": "card",
"className": "bg-blue-50 rounded-lg shadow-md",
"style": {"maxHeight": "300px", "overflowY": "auto"}
}
Repeating Components:
{
"type": "card",
"repeatFor": {
"items": "{{ workflow.clients }}",
"itemKey": "id",
"as": "client"
},
"props": {
"title": "{{ client.name }}",
"description": "{{ client.email }}"
}
}
Layout Distribution (NEW)
Controls how children fill available space:
distribute: "natural"(default) - Children keep natural size (standard CSS flexbox)distribute: "equal"- Children expand equally (flex-1 behavior)distribute: "fit"- Children fit content, no stretch
IMPORTANT: autoSize is deprecated - use distribute instead.
Example for page header with action button:
{
"type": "row",
"justify": "between",
"align": "center",
"children": [
{"type": "heading", "props": {"text": "Customers", "level": 1}},
{"type": "button", "props": {"label": "Add Customer"}}
]
}
Example for form page layout:
{
"type": "column",
"maxWidth": "lg",
"gap": 16,
"children": [
{"type": "heading", "props": {"text": "New Customer", "level": 1}},
{"type": "card", "props": {"children": [/* form fields */]}}
]
}
Required Testing Workflow
Before declaring any artifact complete, you MUST test it:
Workflow/Tool Testing
- Create via
create_workflow(auto-validates) - Verify it appears in
list_workflows - Execute with sample data via
execute_workflow - Verify the result matches expectations
Data Provider Testing
- Create via
create_workflowwith type='data_provider' (auto-validates) - Verify it appears in
list_workflowswith type='data_provider' - Execute via
execute_workflow - Verify output is
[{"label": "...", "value": "..."}]format
Form Testing
- Create via
create_form(auto-validates) - Verify referenced
workflow_idexists and works
App Building (Granular Approach)
Apps are built in pieces, NOT as a single JSON blob:
create_app- Create app metadata (name, description)create_page- Add pages one at a time (auto-validates)create_component- Add components to pages (auto-validates)update_component- Modify individual components- Preview and test in draft mode at
/apps/{slug}?draft=true - Only
publish_appwhen user explicitly requests it
DO NOT publish automatically - let users preview and test first.
App Testing
- Verify all
launchWorkflowIdworkflows exist and execute correctly - Test component layout (defaults should work for most cases)
- Test in draft mode before publishing
DO NOT report success until all applicable tests pass.
App Builder Data Loading
Pages load data via workflows, accessed through expressions:
launchWorkflowId: Workflow to execute on page mountlaunchWorkflowDataSourceId: Key name for the result (defaults to workflow name)- Access data:
{{ workflow.<dataSourceId> }}(direct access - NO.resultwrapper) - DataTable: Use
dataSourceprop matching thelaunchWorkflowDataSourceId
Example: List Page with DataTable
{
"launchWorkflowId": "list_clients",
"launchWorkflowDataSourceId": "clientsList",
"layout": {
"type": "column",
"children": [{
"type": "data-table",
"props": {
"dataSource": "clientsList",
"dataPath": "clients",
"columns": [
{"key": "name", "label": "Name"},
{"key": "email", "label": "Email"}
]
}
}]
}
}
The workflow result is stored under workflow.clientsList, and the DataTable reads from workflow.clientsList.clients.
Decorators
Bifrost provides three decorator types:
from bifrost import workflow, tool, data_provider
@workflow
async def my_workflow(name: str) -> dict:
'''What this workflow does.'''
return {"result": "value"}
@tool
async def my_tool(query: str) -> dict:
'''Tool description for AI agents.'''
return {"answer": "..."}
@data_provider
async def get_options() -> list[dict]:
'''Returns options for dropdowns.'''
return [{"label": "Option", "value": "opt"}]
Note: @tool is an alias for @workflow(is_tool=True). Use @tool for cleaner code when creating AI agent tools.
Workspace Structure
Files are organized in the root of the workspace (no workspace/ prefix):
apps/ # App Builder applications (by company/org)
├── global/ # Global apps (available to all orgs)
└── <company>/ # Company-specific apps
features/ # Feature-based organization (primary work area)
└── <feature-name>/
├── workflows/
├── services/
├── forms/
└── models.py
shared/ # Cross-feature resources
├── data_providers/
├── utilities/
└── services/
modules/ # Auto-generated SDKs (DO NOT EDIT)
Multi-tenancy Awareness
Before creating any resource (tables, apps, forms), ask the user:
- Which organization? Use
list_organizationsto show available options - Global or org-specific? Clarify scope requirements
If user says "global", explain this makes the resource visible to all organizations.
Scope Options
global- Visible to all organizationsorganization- Visible only to the specified organization (requiresorganization_id)application- Scoped to a specific app (for tables only, requiresapplication_id)
Multi-tenancy Patterns
When creating apps or forms:
# Organization-scoped (default)
create_app(name="My App", scope="organization", organization_id="org-123")
# Global (visible to all orgs)
create_app(name="Shared App", scope="global")
When creating tables:
# Organization-scoped
create_table(name="Customers", scope="organization", organization_id="org-123")
# Global table
create_table(name="Reference Data", scope="global")
# App-scoped table
create_table(name="App Data", scope="application", application_id="app-456")
Access Control Notes
- Restricted tools (org tools, create_table, update_table) are platform-admin only
- Regular tools (list_tables, get_table) respect org filtering for non-admins
- Non-admins only see resources in their organization
Session Summary Template
At the end of each session, provide:
## Session Summary
### Completed
- [What was built/accomplished]
### System Bugs Fixed
- [Bug description] → [Fix applied] → [File changed]
### Documentation Recommendations
- **Tool/File**: [get_workflow_schema / SKILL.md / etc.]
- **Issue**: [What was misleading or wrong]
- **Recommendation**: [Specific change to make]
### Notes for Future Sessions
- [Anything relevant for continuity]
スコア
総合スコア
リポジトリの品質指標に基づく評価
SKILL.mdファイルが含まれている
ライセンスが設定されている
100文字以上の説明がある
GitHub Stars 100以上
3ヶ月以内に更新がある
10回以上フォークされている
オープンIssueが50未満
プログラミング言語が設定されている
1つ以上のタグが設定されている
レビュー
レビュー機能は近日公開予定です