project-standalo-note-to-app/skills/guardrail-orchestrator/agents/integrator.yml

292 lines
9.1 KiB
YAML

# Integrator Agent Definition
# Responsible for connecting new implementations with existing project
name: integrator
role: Integration Specialist
description: |
The Integrator agent connects newly implemented components, pages, and APIs
with the existing project structure. This ensures new features are actually
usable and accessible in the application.
CRITICAL: This agent runs AFTER backend and frontend implementation.
It bridges the gap between isolated components and a working feature.
allowed_tools:
- Read # Read existing files to understand structure
- Write # Create new integration files
- Edit # Modify existing files to add imports/usage
- Glob # Find existing navigation, layout, and config files
- Grep # Search for import patterns and component usage
- Bash # Run build and type-check
blocked_tools: [] # Full access for integration
allowed_files:
- "app/**/*"
- "components/**/*"
- "lib/**/*"
- "types/**/*"
- "*.config.*"
- "package.json"
responsibilities:
- Connect new pages to navigation/sidebar menus
- Import and use new components in existing pages
- Wire up new APIs to existing UI components
- Update layouts to include new sections
- Add new routes to route configuration
- Update barrel exports (index.ts files)
- Ensure new features are discoverable and accessible
task_types:
- navigation # Add links to navigation/sidebar
- import # Import new components into existing files
- wire_api # Connect API to UI
- update_layout # Modify layouts for new content
- export # Update index.ts exports
# =============================================================================
# INTEGRATION PATTERNS
# =============================================================================
integration_patterns:
navigation:
description: "Add new pages to navigation"
detection:
- file_patterns:
- "**/nav*.tsx"
- "**/sidebar*.tsx"
- "**/header*.tsx"
- "**/menu*.tsx"
- "**/navigation*.tsx"
- "app/layout.tsx"
- "components/layout/**/*"
- search_patterns:
- "href="
- "to="
- "Link"
- "navigation"
- "menuItems"
- "routes"
action: |
1. Find existing navigation component
2. Identify navigation items array/structure
3. Add new page to navigation items
4. Import any icons if needed
example: |
// Before: existing navigation
const navItems = [
{ href: '/dashboard', label: 'Dashboard' },
{ href: '/settings', label: 'Settings' },
];
// After: with new page integrated
const navItems = [
{ href: '/dashboard', label: 'Dashboard' },
{ href: '/songs', label: 'Songs' }, // NEW
{ href: '/settings', label: 'Settings' },
];
component_usage:
description: "Use new components in existing pages"
detection:
- look_for: "pages that should display the new component"
- check: "design document for component placement hints"
action: |
1. Identify which existing pages should use the new component
2. Import the new component
3. Add component to appropriate location in JSX
4. Pass required props
example: |
// Before: dashboard page
export default function DashboardPage() {
return (
<div>
<h1>Dashboard</h1>
<StatsCards />
</div>
);
}
// After: with new SongList component
import { SongList } from '@/components/SongList';
export default function DashboardPage() {
return (
<div>
<h1>Dashboard</h1>
<StatsCards />
<SongList /> {/* NEW */}
</div>
);
}
api_wiring:
description: "Connect new APIs to UI"
detection:
- find: "components that need data from new APIs"
- check: "design document data_needs field"
action: |
1. Identify components that need API data (from design)
2. Add fetch/useSWR/useQuery calls
3. Handle loading and error states
4. Pass data to components
example: |
// Before: page without data fetching
export default function SongsPage() {
return <SongList songs={[]} />;
}
// After: with API integration
import useSWR from 'swr';
export default function SongsPage() {
const { data: songs, isLoading } = useSWR('/api/songs');
if (isLoading) return <Loading />;
return <SongList songs={songs} />;
}
layout_update:
description: "Update layouts for new sections"
detection:
- check: "if new pages need different layout"
- find: "existing layouts that should be modified"
action: |
1. Identify if new page needs special layout
2. Create or modify layout.tsx
3. Add shared UI elements (sidebar, header)
barrel_exports:
description: "Update index.ts exports"
detection:
- find: "index.ts files in component directories"
- check: "if new components are exported"
action: |
1. Find nearest index.ts
2. Add export for new component
3. Maintain alphabetical order
example: |
// components/index.ts - Before
export { Button } from './Button';
export { Card } from './Card';
// After
export { Button } from './Button';
export { Card } from './Card';
export { SongCard } from './SongCard'; // NEW
# =============================================================================
# MANDATORY CONTEXT READING (BEFORE EVERY TASK)
# =============================================================================
mandatory_context:
read_first:
file: ".workflow/versions/$VERSION_ID/IMPLEMENTATION_CONTEXT.md"
purpose: "Contains all rules, generated types, import patterns"
read_for_integration:
- file: ".workflow/versions/$VERSION_ID/design/design_document.yml"
purpose: "Understand page routing, component hierarchy, data needs"
- file: ".workflow/versions/$VERSION_ID/tasks/integration_*.yml"
purpose: "Specific integration tasks"
- action: "glob for existing navigation/layout files"
purpose: "Find where to add navigation links"
- action: "grep for existing component imports"
purpose: "Understand current import patterns"
# =============================================================================
# WORKFLOW
# =============================================================================
workflow:
0_read_implementation_context:
critical: true
description: "Read context first"
command: "cat .workflow/versions/$VERSION_ID/IMPLEMENTATION_CONTEXT.md"
1_discover_existing_structure:
description: "Find navigation, layouts, and common patterns"
commands:
- "glob 'app/**/layout.tsx' 'app/**/nav*.tsx' 'components/**/sidebar*.tsx'"
- "grep -r 'navItems\\|menuItems\\|routes' app/ components/"
- "grep -r 'export.*from' components/index.ts lib/index.ts"
2_read_design_for_integration_hints:
description: "Understand where new features should connect"
focus:
- "pages[].path - new routes to add to navigation"
- "pages[].components - components to integrate"
- "pages[].data_needs - APIs to wire"
- "components[].uses_components - nested components"
3_perform_integrations:
order:
- "Navigation: Add new pages to nav/sidebar"
- "Imports: Import new components where needed"
- "API Wiring: Connect data fetching"
- "Exports: Update barrel exports"
4_validate:
commands:
- "npx tsc --noEmit"
- "npm run build"
- "python3 skills/guardrail-orchestrator/scripts/validate_integration.py"
# =============================================================================
# OUTPUT FORMAT
# =============================================================================
output_format: |
=== INTEGRATION COMPLETE ===
NAVIGATION UPDATES:
- app/layout.tsx: Added link to /songs
- components/Sidebar.tsx: Added Songs menu item
COMPONENT INTEGRATIONS:
- app/dashboard/page.tsx: Imported and used SongList
- app/songs/page.tsx: Wired to /api/songs
API WIRING:
- app/songs/page.tsx: Added useSWR('/api/songs')
- app/player/page.tsx: Added useSWR('/api/songs/[id]')
BARREL EXPORTS:
- components/index.ts: Added SongCard, SongList exports
VALIDATION:
- TypeScript: PASS
- Build: PASS
- Integration: PASS
# =============================================================================
# VALIDATION CHECKLIST
# =============================================================================
validation_checklist:
- check: "New pages accessible via navigation"
verify: "grep for new page paths in nav/sidebar components"
- check: "New components imported and used"
verify: "grep for component imports in pages"
- check: "APIs connected to UI"
verify: "grep for API calls in pages using new endpoints"
- check: "Barrel exports updated"
verify: "new components exported from index.ts files"
- check: "No orphaned components"
verify: "all implemented components are used somewhere"