diff --git a/.github/agents/Backend_Dev.agent.md b/.github/agents/Backend_Dev.agent.md index 9c9b3283..1a942b71 100644 --- a/.github/agents/Backend_Dev.agent.md +++ b/.github/agents/Backend_Dev.agent.md @@ -3,8 +3,8 @@ name: 'Backend Dev' description: 'Senior Go Engineer focused on high-performance, secure backend implementation.' argument-hint: 'The specific backend task from the Plan (e.g., "Implement ProxyHost CRUD endpoints")' tools: - ['agent', 'execute', 'read', 'search', 'edit/createDirectory', 'edit/createFile', 'edit/editFiles', 'edit/editNotebook', 'todo', 'vscode/runCommand'] -model: 'Cloaude Sonnet 4.5' + ['vscode/extensions', 'vscode/getProjectSetupInfo', 'vscode/installExtension', 'vscode/openSimpleBrowser', 'vscode/runCommand', 'vscode/askQuestions', 'vscode/vscodeAPI', 'execute/getTerminalOutput', 'execute/awaitTerminal', 'execute/killTerminal', 'execute/runTask', 'execute/createAndRunTask', 'execute/runNotebookCell', 'execute/testFailure', 'execute/runTests', 'execute/runInTerminal', 'read/terminalSelection', 'read/terminalLastCommand', 'read/getTaskOutput', 'read/getNotebookSummary', 'read/problems', 'read/readFile', 'read/readNotebookCellOutput', 'agent/runSubagent', 'edit/createDirectory', 'edit/createFile', 'edit/editFiles', 'edit/editNotebook', 'search/changes', 'search/codebase', 'search/fileSearch', 'search/listDirectory', 'search/searchResults', 'search/textSearch', 'search/usages', 'search/searchSubagent', 'todo'] +model: 'GPT-5.2-Codex' --- You are a SENIOR GO BACKEND ENGINEER specializing in Gin, GORM, and System Architecture. Your priority is writing code that is clean, tested, and secure by default. diff --git a/.github/agents/DevOps.agent.md b/.github/agents/DevOps.agent.md index 7609df59..7f30af42 100644 --- a/.github/agents/DevOps.agent.md +++ b/.github/agents/DevOps.agent.md @@ -3,8 +3,8 @@ name: 'DevOps' description: 'DevOps specialist for CI/CD pipelines, deployment debugging, and GitOps workflows focused on making deployments boring and reliable' argument-hint: 'The CI/CD or infrastructure task (e.g., "Debug failing GitHub Action workflow")' tools: - ['agent', 'execute', 'read', 'search', 'edit/createDirectory', 'edit/createFile', 'edit/editFiles', 'edit/editNotebook', 'todo', 'vscode/runCommand', 'vscode/extensions', 'vscode/installExtension', 'vscode/getProjectSetupInfo', 'web', 'github/*', 'io.github.goreleaser/mcp/*', 'ms-azuretools.vscode-containers/containerToolsConfig', 'github.vscode-pull-request-github/*'] -model: 'Cloaude Sonnet 4.5' + ['vscode/extensions', 'vscode/getProjectSetupInfo', 'vscode/installExtension', 'vscode/openSimpleBrowser', 'vscode/runCommand', 'vscode/askQuestions', 'vscode/vscodeAPI', 'execute/getTerminalOutput', 'execute/awaitTerminal', 'execute/killTerminal', 'execute/runTask', 'execute/createAndRunTask', 'execute/runNotebookCell', 'execute/testFailure', 'execute/runTests', 'execute/runInTerminal', 'read/terminalSelection', 'read/terminalLastCommand', 'read/getTaskOutput', 'read/getNotebookSummary', 'read/problems', 'read/readFile', 'read/readNotebookCellOutput', 'agent/runSubagent', 'edit/createDirectory', 'edit/createFile', 'edit/editFiles', 'edit/editNotebook', 'search/changes', 'search/codebase', 'search/fileSearch', 'search/listDirectory', 'search/searchResults', 'search/textSearch', 'search/usages', 'search/searchSubagent', 'web/fetch', 'github/add_comment_to_pending_review', 'github/add_issue_comment', 'github/assign_copilot_to_issue', 'github/create_branch', 'github/create_or_update_file', 'github/create_pull_request', 'github/create_repository', 'github/delete_file', 'github/fork_repository', 'github/get_commit', 'github/get_file_contents', 'github/get_label', 'github/get_latest_release', 'github/get_me', 'github/get_release_by_tag', 'github/get_tag', 'github/get_team_members', 'github/get_teams', 'github/issue_read', 'github/issue_write', 'github/list_branches', 'github/list_commits', 'github/list_issue_types', 'github/list_issues', 'github/list_pull_requests', 'github/list_releases', 'github/list_tags', 'github/merge_pull_request', 'github/pull_request_read', 'github/pull_request_review_write', 'github/push_files', 'github/request_copilot_review', 'github/search_code', 'github/search_issues', 'github/search_pull_requests', 'github/search_repositories', 'github/search_users', 'github/sub_issue_write', 'github/update_pull_request', 'github/update_pull_request_branch', 'github/add_comment_to_pending_review', 'github/add_issue_comment', 'github/assign_copilot_to_issue', 'github/create_branch', 'github/create_or_update_file', 'github/create_pull_request', 'github/create_repository', 'github/delete_file', 'github/fork_repository', 'github/get_commit', 'github/get_file_contents', 'github/get_label', 'github/get_latest_release', 'github/get_me', 'github/get_release_by_tag', 'github/get_tag', 'github/get_team_members', 'github/get_teams', 'github/issue_read', 'github/issue_write', 'github/list_branches', 'github/list_commits', 'github/list_issue_types', 'github/list_issues', 'github/list_pull_requests', 'github/list_releases', 'github/list_tags', 'github/merge_pull_request', 'github/pull_request_read', 'github/pull_request_review_write', 'github/push_files', 'github/request_copilot_review', 'github/search_code', 'github/search_issues', 'github/search_pull_requests', 'github/search_repositories', 'github/search_users', 'github/sub_issue_write', 'github/update_pull_request', 'github/update_pull_request_branch', 'github/add_comment_to_pending_review', 'github/add_issue_comment', 'github/assign_copilot_to_issue', 'github/create_branch', 'github/create_or_update_file', 'github/create_pull_request', 'github/create_repository', 'github/delete_file', 'github/fork_repository', 'github/get_commit', 'github/get_file_contents', 'github/get_label', 'github/get_latest_release', 'github/get_me', 'github/get_release_by_tag', 'github/get_tag', 'github/get_team_members', 'github/get_teams', 'github/issue_read', 'github/issue_write', 'github/list_branches', 'github/list_commits', 'github/list_issue_types', 'github/list_issues', 'github/list_pull_requests', 'github/list_releases', 'github/list_tags', 'github/merge_pull_request', 'github/pull_request_read', 'github/pull_request_review_write', 'github/push_files', 'github/request_copilot_review', 'github/search_code', 'github/search_issues', 'github/search_pull_requests', 'github/search_repositories', 'github/search_users', 'github/sub_issue_write', 'github/update_pull_request', 'github/update_pull_request_branch', 'io.github.goreleaser/mcp/check', 'ms-azuretools.vscode-containers/containerToolsConfig', 'todo'] +model: 'GPT-5.2-Codex' mcp-servers: - github --- diff --git a/.github/agents/Doc_Writer.agent.md b/.github/agents/Doc_Writer.agent.md index f7ed429e..3739cf22 100644 --- a/.github/agents/Doc_Writer.agent.md +++ b/.github/agents/Doc_Writer.agent.md @@ -3,8 +3,8 @@ name: 'Docs Writer' description: 'User Advocate and Writer focused on creating simple, layman-friendly documentation.' argument-hint: 'The feature to document (e.g., "Write the guide for the new Real-Time Logs")' tools: - ['agent', 'read', 'search', 'edit/createDirectory', 'edit/createFile', 'edit/editFiles', 'todo', 'web', 'vscode/openSimpleBrowser', 'github/*', 'vscode.mermaid-chat-features/renderMermaidDiagram', 'github.vscode-pull-request-github/*'] -model: 'Cloaude Sonnet 4.5' + ['vscode/extensions', 'vscode/getProjectSetupInfo', 'vscode/installExtension', 'vscode/openSimpleBrowser', 'vscode/runCommand', 'vscode/askQuestions', 'vscode/vscodeAPI', 'read/terminalSelection', 'read/terminalLastCommand', 'read/getTaskOutput', 'read/getNotebookSummary', 'read/problems', 'read/readFile', 'read/readNotebookCellOutput', 'agent/runSubagent', 'edit/createDirectory', 'edit/createFile', 'edit/editFiles', 'search/changes', 'search/codebase', 'search/fileSearch', 'search/listDirectory', 'search/searchResults', 'search/textSearch', 'search/usages', 'search/searchSubagent', 'web/fetch', 'github/add_comment_to_pending_review', 'github/add_issue_comment', 'github/assign_copilot_to_issue', 'github/create_branch', 'github/create_or_update_file', 'github/create_pull_request', 'github/create_repository', 'github/delete_file', 'github/fork_repository', 'github/get_commit', 'github/get_file_contents', 'github/get_label', 'github/get_latest_release', 'github/get_me', 'github/get_release_by_tag', 'github/get_tag', 'github/get_team_members', 'github/get_teams', 'github/issue_read', 'github/issue_write', 'github/list_branches', 'github/list_commits', 'github/list_issue_types', 'github/list_issues', 'github/list_pull_requests', 'github/list_releases', 'github/list_tags', 'github/merge_pull_request', 'github/pull_request_read', 'github/pull_request_review_write', 'github/push_files', 'github/request_copilot_review', 'github/search_code', 'github/search_issues', 'github/search_pull_requests', 'github/search_repositories', 'github/search_users', 'github/sub_issue_write', 'github/update_pull_request', 'github/update_pull_request_branch', 'github/add_comment_to_pending_review', 'github/add_issue_comment', 'github/assign_copilot_to_issue', 'github/create_branch', 'github/create_or_update_file', 'github/create_pull_request', 'github/create_repository', 'github/delete_file', 'github/fork_repository', 'github/get_commit', 'github/get_file_contents', 'github/get_label', 'github/get_latest_release', 'github/get_me', 'github/get_release_by_tag', 'github/get_tag', 'github/get_team_members', 'github/get_teams', 'github/issue_read', 'github/issue_write', 'github/list_branches', 'github/list_commits', 'github/list_issue_types', 'github/list_issues', 'github/list_pull_requests', 'github/list_releases', 'github/list_tags', 'github/merge_pull_request', 'github/pull_request_read', 'github/pull_request_review_write', 'github/push_files', 'github/request_copilot_review', 'github/search_code', 'github/search_issues', 'github/search_pull_requests', 'github/search_repositories', 'github/search_users', 'github/sub_issue_write', 'github/update_pull_request', 'github/update_pull_request_branch', 'github/add_comment_to_pending_review', 'github/add_issue_comment', 'github/assign_copilot_to_issue', 'github/create_branch', 'github/create_or_update_file', 'github/create_pull_request', 'github/create_repository', 'github/delete_file', 'github/fork_repository', 'github/get_commit', 'github/get_file_contents', 'github/get_label', 'github/get_latest_release', 'github/get_me', 'github/get_release_by_tag', 'github/get_tag', 'github/get_team_members', 'github/get_teams', 'github/issue_read', 'github/issue_write', 'github/list_branches', 'github/list_commits', 'github/list_issue_types', 'github/list_issues', 'github/list_pull_requests', 'github/list_releases', 'github/list_tags', 'github/merge_pull_request', 'github/pull_request_read', 'github/pull_request_review_write', 'github/push_files', 'github/request_copilot_review', 'github/search_code', 'github/search_issues', 'github/search_pull_requests', 'github/search_repositories', 'github/search_users', 'github/sub_issue_write', 'github/update_pull_request', 'github/update_pull_request_branch', 'vscode.mermaid-chat-features/renderMermaidDiagram', 'todo'] +model: 'GPT-5.2-Codex' mcp-servers: - github --- diff --git a/.github/agents/Frontend_Dev.agent.md b/.github/agents/Frontend_Dev.agent.md index b3f88444..63af1912 100644 --- a/.github/agents/Frontend_Dev.agent.md +++ b/.github/agents/Frontend_Dev.agent.md @@ -3,8 +3,8 @@ name: 'Frontend Dev' description: 'Senior React/TypeScript Engineer for frontend implementation.' argument-hint: 'The frontend feature or component to implement (e.g., "Implement the Real-Time Logs dashboard component")' tools: - ['agent', 'execute', 'read', 'search', 'edit/createDirectory', 'edit/createFile', 'edit/editFiles', 'edit/editNotebook', 'todo', 'web', 'vscode/runCommand'] -model: 'Cloaude Sonnet 4.5' + ['vscode/extensions', 'vscode/getProjectSetupInfo', 'vscode/installExtension', 'vscode/openSimpleBrowser', 'vscode/runCommand', 'vscode/askQuestions', 'vscode/vscodeAPI', 'execute/getTerminalOutput', 'execute/awaitTerminal', 'execute/killTerminal', 'execute/runTask', 'execute/createAndRunTask', 'execute/runNotebookCell', 'execute/testFailure', 'execute/runTests', 'execute/runInTerminal', 'read/terminalSelection', 'read/terminalLastCommand', 'read/getTaskOutput', 'read/getNotebookSummary', 'read/problems', 'read/readFile', 'read/readNotebookCellOutput', 'agent/runSubagent', 'edit/createDirectory', 'edit/createFile', 'edit/editFiles', 'edit/editNotebook', 'search/changes', 'search/codebase', 'search/fileSearch', 'search/listDirectory', 'search/searchResults', 'search/textSearch', 'search/usages', 'search/searchSubagent', 'web/fetch', 'todo'] +model: 'GPT-5.2-Codex' --- You are a SENIOR REACT/TYPESCRIPT ENGINEER with deep expertise in: - React 18+, TypeScript 5+, TanStack Query, TanStack Router diff --git a/.github/agents/Management.agent.md b/.github/agents/Management.agent.md index 7037611c..aa1bcf73 100644 --- a/.github/agents/Management.agent.md +++ b/.github/agents/Management.agent.md @@ -3,8 +3,8 @@ name: 'Management' description: 'Engineering Director. Delegates ALL research and execution. DO NOT ask it to debug code directly.' argument-hint: 'The high-level goal (e.g., "Build the new Proxy Host Dashboard widget")' tools: - ['agent', 'edit', 'edit/createDirectory', 'edit/createFile', 'edit/editFiles', 'edit/editNotebook', 'execute', 'read', 'search', 'todo', 'vscode', 'vscode/askQuestions', 'vscode/extensions', 'vscode/getProjectSetupInfo', 'vscode/installExtension', 'vscode/openSimpleBrowser', 'vscode/runCommand', 'vscode/switchAgent', 'vscode/vscodeAPI', 'web', 'github/*', 'playwright/*', 'trivy-mcp/*', 'io.github.goreleaser/mcp/*', 'vscode.mermaid-chat-features/renderMermaidDiagram', 'ms-azuretools.vscode-containers/containerToolsConfig', 'github.vscode-pull-request-github/*'] -model: 'Cloaude Sonnet 4.5' + ['vscode/extensions', 'vscode/getProjectSetupInfo', 'vscode/installExtension', 'vscode/newWorkspace', 'vscode/openSimpleBrowser', 'vscode/runCommand', 'vscode/askQuestions', 'vscode/vscodeAPI', 'execute/getTerminalOutput', 'execute/awaitTerminal', 'execute/killTerminal', 'execute/runTask', 'execute/createAndRunTask', 'execute/runNotebookCell', 'execute/testFailure', 'execute/runTests', 'execute/runInTerminal', 'read/terminalSelection', 'read/terminalLastCommand', 'read/getTaskOutput', 'read/getNotebookSummary', 'read/problems', 'read/readFile', 'read/readNotebookCellOutput', 'agent/runSubagent', 'edit/createDirectory', 'edit/createFile', 'edit/createJupyterNotebook', 'edit/editFiles', 'edit/editNotebook', 'search/changes', 'search/codebase', 'search/fileSearch', 'search/listDirectory', 'search/searchResults', 'search/textSearch', 'search/usages', 'search/searchSubagent', 'web/fetch', 'github/add_comment_to_pending_review', 'github/add_issue_comment', 'github/assign_copilot_to_issue', 'github/create_branch', 'github/create_or_update_file', 'github/create_pull_request', 'github/create_repository', 'github/delete_file', 'github/fork_repository', 'github/get_commit', 'github/get_file_contents', 'github/get_label', 'github/get_latest_release', 'github/get_me', 'github/get_release_by_tag', 'github/get_tag', 'github/get_team_members', 'github/get_teams', 'github/issue_read', 'github/issue_write', 'github/list_branches', 'github/list_commits', 'github/list_issue_types', 'github/list_issues', 'github/list_pull_requests', 'github/list_releases', 'github/list_tags', 'github/merge_pull_request', 'github/pull_request_read', 'github/pull_request_review_write', 'github/push_files', 'github/request_copilot_review', 'github/search_code', 'github/search_issues', 'github/search_pull_requests', 'github/search_repositories', 'github/search_users', 'github/sub_issue_write', 'github/update_pull_request', 'github/update_pull_request_branch', 'github/add_comment_to_pending_review', 'github/add_issue_comment', 'github/assign_copilot_to_issue', 'github/create_branch', 'github/create_or_update_file', 'github/create_pull_request', 'github/create_repository', 'github/delete_file', 'github/fork_repository', 'github/get_commit', 'github/get_file_contents', 'github/get_label', 'github/get_latest_release', 'github/get_me', 'github/get_release_by_tag', 'github/get_tag', 'github/get_team_members', 'github/get_teams', 'github/issue_read', 'github/issue_write', 'github/list_branches', 'github/list_commits', 'github/list_issue_types', 'github/list_issues', 'github/list_pull_requests', 'github/list_releases', 'github/list_tags', 'github/merge_pull_request', 'github/pull_request_read', 'github/pull_request_review_write', 'github/push_files', 'github/request_copilot_review', 'github/search_code', 'github/search_issues', 'github/search_pull_requests', 'github/search_repositories', 'github/search_users', 'github/sub_issue_write', 'github/update_pull_request', 'github/update_pull_request_branch', 'github/add_comment_to_pending_review', 'github/add_issue_comment', 'github/assign_copilot_to_issue', 'github/create_branch', 'github/create_or_update_file', 'github/create_pull_request', 'github/create_repository', 'github/delete_file', 'github/fork_repository', 'github/get_commit', 'github/get_file_contents', 'github/get_label', 'github/get_latest_release', 'github/get_me', 'github/get_release_by_tag', 'github/get_tag', 'github/get_team_members', 'github/get_teams', 'github/issue_read', 'github/issue_write', 'github/list_branches', 'github/list_commits', 'github/list_issue_types', 'github/list_issues', 'github/list_pull_requests', 'github/list_releases', 'github/list_tags', 'github/merge_pull_request', 'github/pull_request_read', 'github/pull_request_review_write', 'github/push_files', 'github/request_copilot_review', 'github/search_code', 'github/search_issues', 'github/search_pull_requests', 'github/search_repositories', 'github/search_users', 'github/sub_issue_write', 'github/update_pull_request', 'github/update_pull_request_branch', 'io.github.goreleaser/mcp/check', 'playwright/browser_click', 'playwright/browser_close', 'playwright/browser_console_messages', 'playwright/browser_drag', 'playwright/browser_evaluate', 'playwright/browser_file_upload', 'playwright/browser_fill_form', 'playwright/browser_handle_dialog', 'playwright/browser_hover', 'playwright/browser_install', 'playwright/browser_navigate', 'playwright/browser_navigate_back', 'playwright/browser_network_requests', 'playwright/browser_press_key', 'playwright/browser_resize', 'playwright/browser_run_code', 'playwright/browser_select_option', 'playwright/browser_snapshot', 'playwright/browser_tabs', 'playwright/browser_take_screenshot', 'playwright/browser_type', 'playwright/browser_wait_for', 'trivy-mcp/findings_get', 'trivy-mcp/findings_list', 'trivy-mcp/scan_filesystem', 'trivy-mcp/scan_image', 'trivy-mcp/scan_repository', 'trivy-mcp/trivy_version', 'playwright/browser_click', 'playwright/browser_close', 'playwright/browser_console_messages', 'playwright/browser_drag', 'playwright/browser_evaluate', 'playwright/browser_file_upload', 'playwright/browser_fill_form', 'playwright/browser_handle_dialog', 'playwright/browser_hover', 'playwright/browser_install', 'playwright/browser_navigate', 'playwright/browser_navigate_back', 'playwright/browser_network_requests', 'playwright/browser_press_key', 'playwright/browser_resize', 'playwright/browser_run_code', 'playwright/browser_select_option', 'playwright/browser_snapshot', 'playwright/browser_tabs', 'playwright/browser_take_screenshot', 'playwright/browser_type', 'playwright/browser_wait_for', 'vscode.mermaid-chat-features/renderMermaidDiagram', 'github.vscode-pull-request-github/issue_fetch', 'github.vscode-pull-request-github/suggest-fix', 'github.vscode-pull-request-github/searchSyntax', 'github.vscode-pull-request-github/doSearch', 'github.vscode-pull-request-github/renderIssues', 'github.vscode-pull-request-github/activePullRequest', 'github.vscode-pull-request-github/openPullRequest', 'ms-azuretools.vscode-containers/containerToolsConfig', 'todo'] +model: 'GPT-5.2-Codex' --- You are the ENGINEERING DIRECTOR. **YOUR OPERATING MODEL: AGGRESSIVE DELEGATION.** diff --git a/.github/agents/Planning.agent.md b/.github/agents/Planning.agent.md index 49ac9e31..7ff15503 100644 --- a/.github/agents/Planning.agent.md +++ b/.github/agents/Planning.agent.md @@ -3,8 +3,8 @@ name: 'Planning' description: 'Principal Architect for technical planning and design decisions.' argument-hint: 'The feature or system to plan (e.g., "Design the architecture for Real-Time Logs")' tools: - ['vscode/openSimpleBrowser', 'vscode/runCommand', 'vscode/askQuestions', 'execute', 'read', 'agent', 'edit/createDirectory', 'edit/createFile', 'edit/editFiles', 'edit/editNotebook', 'search', 'web', 'github/*', 'github/*', 'github/*', 'trivy-mcp/*', 'playwright/*', 'vscode.mermaid-chat-features/renderMermaidDiagram', 'github.vscode-pull-request-github/issue_fetch', 'github.vscode-pull-request-github/suggest-fix', 'github.vscode-pull-request-github/searchSyntax', 'github.vscode-pull-request-github/doSearch', 'github.vscode-pull-request-github/renderIssues', 'github.vscode-pull-request-github/activePullRequest', 'github.vscode-pull-request-github/openPullRequest', 'ms-azuretools.vscode-containers/containerToolsConfig', 'todo'] -model: 'Cloaude Sonnet 4.5' + ['vscode/extensions', 'vscode/getProjectSetupInfo', 'vscode/installExtension', 'vscode/openSimpleBrowser', 'vscode/runCommand', 'vscode/askQuestions', 'vscode/vscodeAPI', 'execute/getTerminalOutput', 'execute/awaitTerminal', 'execute/killTerminal', 'execute/runTask', 'execute/createAndRunTask', 'execute/runNotebookCell', 'execute/testFailure', 'execute/runTests', 'execute/runInTerminal', 'read/terminalSelection', 'read/terminalLastCommand', 'read/getTaskOutput', 'read/getNotebookSummary', 'read/problems', 'read/readFile', 'read/readNotebookCellOutput', 'agent/runSubagent', 'edit/createDirectory', 'edit/createFile', 'edit/editFiles', 'edit/editNotebook', 'search/changes', 'search/codebase', 'search/fileSearch', 'search/listDirectory', 'search/searchResults', 'search/textSearch', 'search/usages', 'search/searchSubagent', 'web/fetch', 'github/add_comment_to_pending_review', 'github/add_issue_comment', 'github/assign_copilot_to_issue', 'github/create_branch', 'github/create_or_update_file', 'github/create_pull_request', 'github/create_repository', 'github/delete_file', 'github/fork_repository', 'github/get_commit', 'github/get_file_contents', 'github/get_label', 'github/get_latest_release', 'github/get_me', 'github/get_release_by_tag', 'github/get_tag', 'github/get_team_members', 'github/get_teams', 'github/issue_read', 'github/issue_write', 'github/list_branches', 'github/list_commits', 'github/list_issue_types', 'github/list_issues', 'github/list_pull_requests', 'github/list_releases', 'github/list_tags', 'github/merge_pull_request', 'github/pull_request_read', 'github/pull_request_review_write', 'github/push_files', 'github/request_copilot_review', 'github/search_code', 'github/search_issues', 'github/search_pull_requests', 'github/search_repositories', 'github/search_users', 'github/sub_issue_write', 'github/update_pull_request', 'github/update_pull_request_branch', 'github/add_comment_to_pending_review', 'github/add_issue_comment', 'github/assign_copilot_to_issue', 'github/create_branch', 'github/create_or_update_file', 'github/create_pull_request', 'github/create_repository', 'github/delete_file', 'github/fork_repository', 'github/get_commit', 'github/get_file_contents', 'github/get_label', 'github/get_latest_release', 'github/get_me', 'github/get_release_by_tag', 'github/get_tag', 'github/get_team_members', 'github/get_teams', 'github/issue_read', 'github/issue_write', 'github/list_branches', 'github/list_commits', 'github/list_issue_types', 'github/list_issues', 'github/list_pull_requests', 'github/list_releases', 'github/list_tags', 'github/merge_pull_request', 'github/pull_request_read', 'github/pull_request_review_write', 'github/push_files', 'github/request_copilot_review', 'github/search_code', 'github/search_issues', 'github/search_pull_requests', 'github/search_repositories', 'github/search_users', 'github/sub_issue_write', 'github/update_pull_request', 'github/update_pull_request_branch', 'github/add_comment_to_pending_review', 'github/add_issue_comment', 'github/assign_copilot_to_issue', 'github/create_branch', 'github/create_or_update_file', 'github/create_pull_request', 'github/create_repository', 'github/delete_file', 'github/fork_repository', 'github/get_commit', 'github/get_file_contents', 'github/get_label', 'github/get_latest_release', 'github/get_me', 'github/get_release_by_tag', 'github/get_tag', 'github/get_team_members', 'github/get_teams', 'github/issue_read', 'github/issue_write', 'github/list_branches', 'github/list_commits', 'github/list_issue_types', 'github/list_issues', 'github/list_pull_requests', 'github/list_releases', 'github/list_tags', 'github/merge_pull_request', 'github/pull_request_read', 'github/pull_request_review_write', 'github/push_files', 'github/request_copilot_review', 'github/search_code', 'github/search_issues', 'github/search_pull_requests', 'github/search_repositories', 'github/search_users', 'github/sub_issue_write', 'github/update_pull_request', 'github/update_pull_request_branch', 'playwright/browser_click', 'playwright/browser_close', 'playwright/browser_console_messages', 'playwright/browser_drag', 'playwright/browser_evaluate', 'playwright/browser_file_upload', 'playwright/browser_fill_form', 'playwright/browser_handle_dialog', 'playwright/browser_hover', 'playwright/browser_install', 'playwright/browser_navigate', 'playwright/browser_navigate_back', 'playwright/browser_network_requests', 'playwright/browser_press_key', 'playwright/browser_resize', 'playwright/browser_run_code', 'playwright/browser_select_option', 'playwright/browser_snapshot', 'playwright/browser_tabs', 'playwright/browser_take_screenshot', 'playwright/browser_type', 'playwright/browser_wait_for', 'trivy-mcp/findings_get', 'trivy-mcp/findings_list', 'trivy-mcp/scan_filesystem', 'trivy-mcp/scan_image', 'trivy-mcp/scan_repository', 'trivy-mcp/trivy_version', 'playwright/browser_click', 'playwright/browser_close', 'playwright/browser_console_messages', 'playwright/browser_drag', 'playwright/browser_evaluate', 'playwright/browser_file_upload', 'playwright/browser_fill_form', 'playwright/browser_handle_dialog', 'playwright/browser_hover', 'playwright/browser_install', 'playwright/browser_navigate', 'playwright/browser_navigate_back', 'playwright/browser_network_requests', 'playwright/browser_press_key', 'playwright/browser_resize', 'playwright/browser_run_code', 'playwright/browser_select_option', 'playwright/browser_snapshot', 'playwright/browser_tabs', 'playwright/browser_take_screenshot', 'playwright/browser_type', 'playwright/browser_wait_for', 'vscode.mermaid-chat-features/renderMermaidDiagram', 'github.vscode-pull-request-github/issue_fetch', 'github.vscode-pull-request-github/suggest-fix', 'github.vscode-pull-request-github/searchSyntax', 'github.vscode-pull-request-github/doSearch', 'github.vscode-pull-request-github/renderIssues', 'github.vscode-pull-request-github/activePullRequest', 'github.vscode-pull-request-github/openPullRequest', 'ms-azuretools.vscode-containers/containerToolsConfig', 'todo'] +model: 'GPT-5.2-Codex' mcp-servers: - github --- diff --git a/.github/agents/Playwright_Dev.agent.md b/.github/agents/Playwright_Dev.agent.md index 8ddabb9c..107515d1 100644 --- a/.github/agents/Playwright_Dev.agent.md +++ b/.github/agents/Playwright_Dev.agent.md @@ -3,8 +3,8 @@ name: 'Playwright Dev' description: 'E2E Testing Specialist for Playwright test automation.' argument-hint: 'The feature or flow to test (e.g., "Write E2E tests for the login flow")' tools: - ['agent', 'execute', 'read', 'search', 'edit/createDirectory', 'edit/createFile', 'edit/editFiles', 'edit/editNotebook', 'todo', 'web', 'playwright/*', 'vscode/runCommand'] -model: 'Cloaude Sonnet 4.5' + ['vscode/extensions', 'vscode/getProjectSetupInfo', 'vscode/installExtension', 'vscode/openSimpleBrowser', 'vscode/runCommand', 'vscode/askQuestions', 'vscode/vscodeAPI', 'execute/getTerminalOutput', 'execute/awaitTerminal', 'execute/killTerminal', 'execute/runTask', 'execute/createAndRunTask', 'execute/runNotebookCell', 'execute/testFailure', 'execute/runTests', 'execute/runInTerminal', 'read/terminalSelection', 'read/terminalLastCommand', 'read/getTaskOutput', 'read/getNotebookSummary', 'read/problems', 'read/readFile', 'read/readNotebookCellOutput', 'agent/runSubagent', 'edit/createDirectory', 'edit/createFile', 'edit/editFiles', 'edit/editNotebook', 'search/changes', 'search/codebase', 'search/fileSearch', 'search/listDirectory', 'search/searchResults', 'search/textSearch', 'search/usages', 'search/searchSubagent', 'web/fetch', 'playwright/browser_click', 'playwright/browser_close', 'playwright/browser_console_messages', 'playwright/browser_drag', 'playwright/browser_evaluate', 'playwright/browser_file_upload', 'playwright/browser_fill_form', 'playwright/browser_handle_dialog', 'playwright/browser_hover', 'playwright/browser_install', 'playwright/browser_navigate', 'playwright/browser_navigate_back', 'playwright/browser_network_requests', 'playwright/browser_press_key', 'playwright/browser_resize', 'playwright/browser_run_code', 'playwright/browser_select_option', 'playwright/browser_snapshot', 'playwright/browser_tabs', 'playwright/browser_take_screenshot', 'playwright/browser_type', 'playwright/browser_wait_for', 'playwright/browser_click', 'playwright/browser_close', 'playwright/browser_console_messages', 'playwright/browser_drag', 'playwright/browser_evaluate', 'playwright/browser_file_upload', 'playwright/browser_fill_form', 'playwright/browser_handle_dialog', 'playwright/browser_hover', 'playwright/browser_install', 'playwright/browser_navigate', 'playwright/browser_navigate_back', 'playwright/browser_network_requests', 'playwright/browser_press_key', 'playwright/browser_resize', 'playwright/browser_run_code', 'playwright/browser_select_option', 'playwright/browser_snapshot', 'playwright/browser_tabs', 'playwright/browser_take_screenshot', 'playwright/browser_type', 'playwright/browser_wait_for', 'todo'] +model: 'GPT-5.2-Codex' --- You are a PLAYWRIGHT E2E TESTING SPECIALIST with expertise in: - Playwright Test framework @@ -54,7 +54,7 @@ You do not write code, strictly tests. If code changes are needed, inform the Ma - Handle async operations correctly 5. **Execution**: - - Run tests with `npx playwright test --project=chromium` + - Run tests with `cd /projects/Charon npx playwright test --project=firefox` - Use `test_failure` to analyze failures - Debug with headed mode if needed: `--headed` - Generate report: `npx playwright show-report` diff --git a/.github/agents/QA_Security.agent.md b/.github/agents/QA_Security.agent.md index 356b184b..fe63cef8 100644 --- a/.github/agents/QA_Security.agent.md +++ b/.github/agents/QA_Security.agent.md @@ -3,8 +3,8 @@ name: 'QA Security' description: 'Quality Assurance and Security Engineer for testing and vulnerability assessment.' argument-hint: 'The component or feature to test (e.g., "Run security scan on authentication endpoints")' tools: - ['agent', 'execute', 'read', 'search', 'edit/createDirectory', 'edit/createFile', 'edit/editFiles', 'edit/editNotebook', 'todo', 'web', 'playwright/*', 'trivy-mcp/*', 'vscode/extensions', 'vscode/getProjectSetupInfo', 'vscode/installExtension', 'vscode/openSimpleBrowser', 'vscode/runCommand', 'vscode/askQuestions', 'vscode/switchAgent', 'vscode/vscodeAPI'] -model: 'Cloaude Sonnet 4.5' + ['vscode/extensions', 'vscode/getProjectSetupInfo', 'vscode/installExtension', 'vscode/openSimpleBrowser', 'vscode/runCommand', 'vscode/askQuestions', 'vscode/vscodeAPI', 'execute/getTerminalOutput', 'execute/awaitTerminal', 'execute/killTerminal', 'execute/runTask', 'execute/createAndRunTask', 'execute/runNotebookCell', 'execute/testFailure', 'execute/runTests', 'execute/runInTerminal', 'read/terminalSelection', 'read/terminalLastCommand', 'read/getTaskOutput', 'read/getNotebookSummary', 'read/problems', 'read/readFile', 'read/readNotebookCellOutput', 'agent/runSubagent', 'edit/createDirectory', 'edit/createFile', 'edit/editFiles', 'edit/editNotebook', 'search/changes', 'search/codebase', 'search/fileSearch', 'search/listDirectory', 'search/searchResults', 'search/textSearch', 'search/usages', 'search/searchSubagent', 'web/fetch', 'github/add_comment_to_pending_review', 'github/add_issue_comment', 'github/assign_copilot_to_issue', 'github/create_branch', 'github/create_or_update_file', 'github/create_pull_request', 'github/create_repository', 'github/delete_file', 'github/fork_repository', 'github/get_commit', 'github/get_file_contents', 'github/get_label', 'github/get_latest_release', 'github/get_me', 'github/get_release_by_tag', 'github/get_tag', 'github/get_team_members', 'github/get_teams', 'github/issue_read', 'github/issue_write', 'github/list_branches', 'github/list_commits', 'github/list_issue_types', 'github/list_issues', 'github/list_pull_requests', 'github/list_releases', 'github/list_tags', 'github/merge_pull_request', 'github/pull_request_read', 'github/pull_request_review_write', 'github/push_files', 'github/request_copilot_review', 'github/search_code', 'github/search_issues', 'github/search_pull_requests', 'github/search_repositories', 'github/search_users', 'github/sub_issue_write', 'github/update_pull_request', 'github/update_pull_request_branch', 'playwright/browser_click', 'playwright/browser_close', 'playwright/browser_console_messages', 'playwright/browser_drag', 'playwright/browser_evaluate', 'playwright/browser_file_upload', 'playwright/browser_fill_form', 'playwright/browser_handle_dialog', 'playwright/browser_hover', 'playwright/browser_install', 'playwright/browser_navigate', 'playwright/browser_navigate_back', 'playwright/browser_network_requests', 'playwright/browser_press_key', 'playwright/browser_resize', 'playwright/browser_run_code', 'playwright/browser_select_option', 'playwright/browser_snapshot', 'playwright/browser_tabs', 'playwright/browser_take_screenshot', 'playwright/browser_type', 'playwright/browser_wait_for', 'trivy-mcp/findings_get', 'trivy-mcp/findings_list', 'trivy-mcp/scan_filesystem', 'trivy-mcp/scan_image', 'trivy-mcp/scan_repository', 'trivy-mcp/trivy_version', 'playwright/browser_click', 'playwright/browser_close', 'playwright/browser_console_messages', 'playwright/browser_drag', 'playwright/browser_evaluate', 'playwright/browser_file_upload', 'playwright/browser_fill_form', 'playwright/browser_handle_dialog', 'playwright/browser_hover', 'playwright/browser_install', 'playwright/browser_navigate', 'playwright/browser_navigate_back', 'playwright/browser_network_requests', 'playwright/browser_press_key', 'playwright/browser_resize', 'playwright/browser_run_code', 'playwright/browser_select_option', 'playwright/browser_snapshot', 'playwright/browser_tabs', 'playwright/browser_take_screenshot', 'playwright/browser_type', 'playwright/browser_wait_for', 'ms-azuretools.vscode-containers/containerToolsConfig', 'todo'] +model: 'GPT-5.2-Codex' mcp-servers: - trivy-mcp - playwright diff --git a/.github/agents/Supervisor.agent.md b/.github/agents/Supervisor.agent.md index 50acab26..c878993f 100644 --- a/.github/agents/Supervisor.agent.md +++ b/.github/agents/Supervisor.agent.md @@ -3,8 +3,8 @@ name: 'Supervisor' description: 'Code Review Lead for quality assurance and PR review.' argument-hint: 'The PR or code change to review (e.g., "Review PR #123 for security issues")' tools: - ['agent', 'execute', 'read', 'search', 'todo', 'web', 'github/*', 'github.vscode-pull-request-github/*'] -model: 'Cloaude Sonnet 4.5' + ['vscode/extensions', 'vscode/getProjectSetupInfo', 'vscode/installExtension', 'vscode/openSimpleBrowser', 'vscode/runCommand', 'vscode/askQuestions', 'vscode/vscodeAPI', 'execute', 'read', 'agent', 'edit', 'search', 'web', 'github/*', 'github/*', 'github/*', 'io.github.goreleaser/mcp/*', 'playwright/*', 'trivy-mcp/*', 'playwright/*', 'vscode.mermaid-chat-features/renderMermaidDiagram', 'github.vscode-pull-request-github/issue_fetch', 'github.vscode-pull-request-github/suggest-fix', 'github.vscode-pull-request-github/searchSyntax', 'github.vscode-pull-request-github/doSearch', 'github.vscode-pull-request-github/renderIssues', 'github.vscode-pull-request-github/activePullRequest', 'github.vscode-pull-request-github/openPullRequest', 'ms-azuretools.vscode-containers/containerToolsConfig', 'todo'] +model: 'GPT-5.2-Codex' mcp-servers: - github --- diff --git a/.github/instructions/ARCHITECTURE.instructions.md b/.github/instructions/ARCHITECTURE.instructions.md index b7e8bcf1..ac79c6ab 100644 --- a/.github/instructions/ARCHITECTURE.instructions.md +++ b/.github/instructions/ARCHITECTURE.instructions.md @@ -970,7 +970,7 @@ Closes #123 **Execution:** ```bash # Run against Docker container -npx playwright test --project=chromium +cd /projects/Charon npx playwright test --project=firefox # Run with coverage (Vite dev server) .github/skills/scripts/skill-runner.sh test-e2e-playwright-coverage diff --git a/.github/instructions/copilot-instructions.md b/.github/instructions/copilot-instructions.md index 52e15bdf..3f08bf63 100644 --- a/.github/instructions/copilot-instructions.md +++ b/.github/instructions/copilot-instructions.md @@ -128,7 +128,7 @@ Before proposing ANY code change or fix, you must build a mental map of the feat Before marking an implementation task as complete, perform the following in order: 1. **Playwright E2E Tests** (MANDATORY - Run First): - - **Run**: `npx playwright test --project=chromium` from project root + - **Run**: `cd /projects/Charon npx playwright test --project=firefox` from project root - **Why First**: If the app is broken at E2E level, unit tests may need updates. Catch integration issues early. - **Scope**: Run tests relevant to modified features (e.g., `tests/manual-dns-provider.spec.ts`) - **On Failure**: Trace root cause through frontend → backend flow before proceeding diff --git a/.github/instructions/documentation-coding-best-practices.instructions.md b/.github/instructions/documentation-coding-best-practices.instructions.md new file mode 100644 index 00000000..d9bc7d5c --- /dev/null +++ b/.github/instructions/documentation-coding-best-practices.instructions.md @@ -0,0 +1,43 @@ +--- +description: This file describes the documentation and coding best practices for the project. +applyTo: '*' +--- + + +# Documentation & Coding Best Practices + +The following instructions govern how you should generate and update documentation and code. These rules are absolute. + +## 1. Zero-Footprint Attribution (The Ghostwriter Rule) +* **No AI Branding:** You are a ghostwriter. You must **NEVER** add sections titled "AI Notes," "Generated by," "Model Commentary," or "LLM Analysis." +* **Invisible Editing:** The documentation must appear as if written 100% by the project maintainer. Do not leave "scars" or meta-tags indicating an AI touched the file. +* **The "Author" Field:** * **Existing Files:** NEVER modify an existing `Author` field. + * **New Files:** Do NOT add an `Author` field unless explicitly requested. + * **Strict Prohibition:** You are strictly forbidden from placing "GitHub Copilot," "AI," "Assistant," or your model name in any `Author`, `Credits`, or `Contributor` field. + +## 2. Documentation Style +* **Direct & Professional:** The documentation itself is the "note." Do not add a separate preamble or postscript explaining what you wrote. +* **No Conversational Filler:** When asked to generate documentation, output *only* the documentation content. Do not wrap it in "Here is the updated file:" or "I have added the following..." +* **Maintenance:** When updating a file, respect the existing formatting style (headers, indentation, bullet points) perfectly. Do not "fix" style choices unless they are actual syntax errors. +* **Consistency:** Follow the existing style of the file. If the file uses a specific format for sections, maintain that format. Do not introduce new formatting styles. +* **Clarity & Brevity:** Be concise and clear. Avoid unnecessary verbosity or overly technical jargon unless the file's existing style is already very technical. Match the tone and complexity of the existing documentation. + +## 3. Interaction Constraints +* **Calm & Concise:** Be succinct. Do not offer unsolicited advice or "bonus" refactoring unless it is critical for security. +* **Context Retention:** Assume the user knows what they are doing. Do not explain basic concepts unless asked. +* **No Code Generation in Documentation Files:** When editing documentation files, do not generate code snippets unless they are explicitly requested. Focus on the documentation content itself. +* **No Meta-Comments:** Do not include comments about the editing process, your thought process, or any "notes to self" in the documentation. The output should be clean and ready for use. +* **Respect User Intent:** If the user asks for a specific change, do only that change. Do not add additional edits or improvements unless they are critical for security or correctness. +* **No "Best Practices" Sections:** Do not add sections titled "Best Practices," "Recommendations," or "Guidelines" unless the existing file already has such a section. If the file does not have such a section, do not create one. +* **No "Next Steps" or "Further Reading":** Do not add sections that suggest next steps, further reading, or related topics unless the existing file already includes such sections. +* **No Personalization:** Do not personalize the documentation with phrases like "As a developer, you should..." or "In this project, we recommend..." Keep the tone neutral and professional. +* **No Apologies or Uncertainty:** Do not include phrases like "I hope this helps," "Sorry for the confusion," or "Please let me know if you have any questions." The documentation should be authoritative and confident. +* **No Redundant Information:** Do not include information that is already clearly stated in the existing documentation. Avoid redundancy. +* **No Unsolicited Refactoring:** Do not refactor existing documentation for style or clarity unless it contains critical errors. Focus on the specific changes requested by the user. +* **No "Summary" or "Overview" Sections:** Do not add summary or overview sections unless the existing file already has them. If the file does not have such sections, do not create them. +* **No "How It Works" Sections:** Do not add sections explaining how the code works unless the existing documentation already includes such sections. If the file does not have such sections, do not create them. +* **No "Use Cases" or "Examples":** Do not add use cases, examples, or case studies unless the existing documentation already has such sections. If the file does not have such sections, do not create them. +* **No "Troubleshooting" Sections:** Do not add troubleshooting sections unless the existing documentation already includes them. Toubleshooting is its own section of the docs and should not be added ad-hoc to unrelated files. +* **No "FAQ" Sections:** Do not add FAQ sections unless the existing documentation already has them. If the file does not have such sections, do not create them. +* **No "Contact" or "Support" Sections:** Do not add contact information, support channels, or similar sections unless the existing documentation already includes them. If the file does not have such sections, do not create them. +* **No "Contributing" Sections:** Contributing has its on documentation file. Do not add contributing guidelines to unrelated documentation files unless they already have such sections. diff --git a/.github/instructions/html-css-style-color-guide.instructions.md b/.github/instructions/html-css-style-color-guide.instructions.md new file mode 100644 index 00000000..828a2027 --- /dev/null +++ b/.github/instructions/html-css-style-color-guide.instructions.md @@ -0,0 +1,104 @@ +--- +description: 'Color usage guidelines and styling rules for HTML elements to ensure accessible, professional designs.' +applyTo: '**/*.html, **/*.css, **/*.js' +--- + +# HTML CSS Style Color Guide + +Follow these guidelines when updating or creating HTML/CSS styles for browser rendering. Color names +represent the full spectrum of their respective hue ranges (e.g., "blue" includes navy, sky blue, etc.). + +## Color Definitions + +- **Hot Colors**: Oranges, reds, and yellows +- **Cool Colors**: Blues, greens, and purples +- **Neutral Colors**: Grays and grayscale variations +- **Binary Colors**: Black and white +- **60-30-10 Rule** + - **Primary Color**: Use 60% of the time (*cool or light color*) + - **Secondary Color**: Use 30% of the time (*cool or light color*) + - **Accent**: Use 10% of the time (*complementary hot color*) + +## Color Usage Guidelines + +Balance the colors used by applying the **60-30-10 rule** to graphic design elements like backgrounds, +buttons, cards, etc... + +### Background Colors + +**Never Use:** + +- Purple or magenta +- Red, orange, or yellow +- Pink +- Any hot color + +**Recommended:** + +- White or off-white +- Light cool colors (e.g., light blues, light greens) +- Subtle neutral tones +- Light gradients with minimal color shift + +### Text Colors + +**Never Use:** + +- Yellow (poor contrast and readability) +- Pink +- Pure white or light text on light backgrounds +- Pure black or dark text on dark backgrounds + +**Recommended:** + +- Dark neutral colors (e.g., #1f2328, #24292f) +- Near-black variations (#000000 to #333333) + - Ensure background is a light color +- Dark grays (#4d4d4d, #6c757d) +- High-contrast combinations for accessibility +- Near-white variations (#ffffff to #f0f2f3) + - Ensure background is a dark color + +### Colors to Avoid + +Unless explicitly required by design specifications or user request, avoid: + +- Bright purples and magentas +- Bright pinks and neon colors +- Highly saturated hot colors +- Colors with low contrast ratios (fails WCAG accessibility standards) + +### Colors to Use Sparingly + +**Hot Colors** (red, orange, yellow): + +- Reserve for critical alerts, warnings, or error messages +- Use only when conveying urgency or importance +- Limit to small accent areas rather than large sections +- Consider alternatives like icons or bold text before using hot colors + +## Gradients + +Apply gradients with subtle color transitions to maintain professional aesthetics. + +### Best Practices + +- Keep color shifts minimal (e.g., #E6F2FF to #F5F7FA) +- Use gradients within the same color family +- Avoid combining hot and cool colors in a single gradient +- Prefer linear gradients over radial for backgrounds + +### Appropriate Use Cases + +- Background containers and sections +- Button hover states and interactive elements +- Drop shadows and depth effects +- Header and navigation bars +- Card components and panels + +## Additional Resources + +- [Color Tool](https://civicactions.github.io/uswds-color-tool/) +- [Government or Professional Color Standards](https://designsystem.digital.gov/design-tokens/color/overview/) +- [UI Color Palette Best Practices](https://www.interaction-design.org/literature/article/ui-color-palette) +- [Color Combination Resource](https://www.figma.com/resource-library/color-combinations/) diff --git a/.github/instructions/playwright-typescript.instructions.md b/.github/instructions/playwright-typescript.instructions.md index ccb01b5b..e9b1b871 100644 --- a/.github/instructions/playwright-typescript.instructions.md +++ b/.github/instructions/playwright-typescript.instructions.md @@ -70,7 +70,7 @@ test.describe('Movie Search Feature', () => { ## Test Execution Strategy -1. **Initial Run**: Execute tests with `npx playwright test --project=chromium` +1. **Initial Run**: Execute tests with `cd /projects/Charon npx playwright test --project=firefox` 2. **Debug Failures**: Analyze test failures and identify root causes 3. **Iterate**: Refine locators, assertions, or test logic as needed 4. **Validate**: Ensure tests pass consistently and cover the intended functionality diff --git a/.github/instructions/testing.instructions.md b/.github/instructions/testing.instructions.md index e7009a4e..4252a6c8 100644 --- a/.github/instructions/testing.instructions.md +++ b/.github/instructions/testing.instructions.md @@ -35,6 +35,7 @@ This step: - Ensure forms submit correctly - Check navigation and page rendering - **Port: 8080 (Charon Management Interface)** +- **Default Browser: Firefox** (provides best cross-browser compatibility baseline) **Integration Tests (Middleware Enforcement):** - Test Cerberus security module enforcement @@ -61,7 +62,7 @@ For general integration testing without coverage: ```bash # Against Docker container (default) -npx playwright test --project=chromium --project=firefox --project=webkit +cd /projects/Charon npx playwright test --project=firefox --project=firefox --project=webkit # With explicit base URL PLAYWRIGHT_BASE_URL=http://localhost:8080 npx playwright test --project=chromium --project=firefox --project=webkit diff --git a/.github/skills/integration-test-all-scripts/run.sh b/.github/skills/integration-test-all-scripts/run.sh index 47e37d75..f2938d8f 100755 --- a/.github/skills/integration-test-all-scripts/run.sh +++ b/.github/skills/integration-test-all-scripts/run.sh @@ -2,10 +2,9 @@ set -euo pipefail # Integration Test All - Wrapper Script -# Executes the comprehensive integration test suite +# Executes the canonical integration test suite aligned with CI workflows SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" PROJECT_ROOT="$(cd "${SCRIPT_DIR}/../../.." && pwd)" -# Delegate to the existing integration test script -exec "${PROJECT_ROOT}/scripts/integration-test.sh" "$@" +exec bash "${PROJECT_ROOT}/scripts/integration-test-all.sh" "$@" diff --git a/.github/skills/integration-test-all.SKILL.md b/.github/skills/integration-test-all.SKILL.md index 87933d77..9ac6bb18 100644 --- a/.github/skills/integration-test-all.SKILL.md +++ b/.github/skills/integration-test-all.SKILL.md @@ -2,7 +2,7 @@ # agentskills.io specification v1.0 name: "integration-test-all" version: "1.0.0" -description: "Run all integration tests including WAF, CrowdSec, Cerberus, and rate limiting" +description: "Run the canonical integration tests aligned with CI workflows, covering Cerberus, Coraza WAF, CrowdSec bouncer/decisions/startup, and rate limiting. Use when you need local parity with CI integration runs." author: "Charon Project" license: "MIT" tags: @@ -56,7 +56,7 @@ metadata: ## Overview -Executes the complete integration test suite for the Charon project. This skill runs all integration tests including WAF functionality (Coraza), CrowdSec bouncer integration, Cerberus backend protection, and rate limiting. It validates the entire security stack in a containerized environment. +Executes the integration test suite for the Charon project aligned with CI workflows. This skill runs Cerberus full-stack, Coraza WAF, CrowdSec bouncer/decisions/startup, and rate limiting integration tests. It validates the core security stack in a containerized environment. This is the comprehensive test suite that ensures all components work together correctly before deployment. @@ -127,10 +127,11 @@ For use in GitHub Actions workflows: Example output: ``` === Running Integration Test Suite === +✓ Cerberus Integration Tests ✓ Coraza WAF Integration Tests ✓ CrowdSec Bouncer Integration Tests -✓ CrowdSec Decision API Tests -✓ Cerberus Authentication Tests +✓ CrowdSec Decision Tests +✓ CrowdSec Startup Tests ✓ Rate Limiting Tests All integration tests passed! @@ -167,11 +168,12 @@ DOCKER_BUILDKIT=1 .github/skills/scripts/skill-runner.sh integration-test-all This skill executes the following test suites: -1. **Coraza WAF Tests**: SQL injection, XSS, path traversal detection -2. **CrowdSec Bouncer Tests**: IP blocking, decision synchronization -3. **CrowdSec Decision Tests**: Decision creation, removal, persistence -4. **Cerberus Tests**: Authentication, authorization, token management -5. **Rate Limit Tests**: Request throttling, burst handling +1. **Cerberus Tests**: WAF + rate limit + handler order checks +2. **Coraza WAF Tests**: SQL injection, XSS, path traversal detection +3. **CrowdSec Bouncer Tests**: IP blocking, decision synchronization +4. **CrowdSec Decision Tests**: Decision API lifecycle +5. **CrowdSec Startup Tests**: LAPI and bouncer startup validation +6. **Rate Limit Tests**: Request throttling, burst handling ## Error Handling @@ -197,11 +199,12 @@ This skill executes the following test suites: ## Related Skills +- [integration-test-cerberus](./integration-test-cerberus.SKILL.md) - Cerberus full stack tests - [integration-test-coraza](./integration-test-coraza.SKILL.md) - Coraza WAF tests only - [integration-test-crowdsec](./integration-test-crowdsec.SKILL.md) - CrowdSec tests only - [integration-test-crowdsec-decisions](./integration-test-crowdsec-decisions.SKILL.md) - Decision API tests - [integration-test-crowdsec-startup](./integration-test-crowdsec-startup.SKILL.md) - Startup tests -- [docker-verify-crowdsec-config](./docker-verify-crowdsec-config.SKILL.md) - Config validation +- [integration-test-rate-limit](./integration-test-rate-limit.SKILL.md) - Rate limit tests ## Notes @@ -215,6 +218,6 @@ This skill executes the following test suites: --- -**Last Updated**: 2025-12-20 +**Last Updated**: 2026-02-07 **Maintained by**: Charon Project Team -**Source**: `scripts/integration-test.sh` +**Source**: `scripts/integration-test-all.sh` diff --git a/.github/skills/integration-test-cerberus-scripts/run.sh b/.github/skills/integration-test-cerberus-scripts/run.sh new file mode 100755 index 00000000..7a21091d --- /dev/null +++ b/.github/skills/integration-test-cerberus-scripts/run.sh @@ -0,0 +1,10 @@ +#!/usr/bin/env bash +set -euo pipefail + +# Integration Test Cerberus - Wrapper Script +# Tests Cerberus full-stack integration + +SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" +PROJECT_ROOT="$(cd "${SCRIPT_DIR}/../../.." && pwd)" + +exec "${PROJECT_ROOT}/scripts/cerberus_integration.sh" "$@" diff --git a/.github/skills/integration-test-cerberus.SKILL.md b/.github/skills/integration-test-cerberus.SKILL.md new file mode 100644 index 00000000..504c3042 --- /dev/null +++ b/.github/skills/integration-test-cerberus.SKILL.md @@ -0,0 +1,128 @@ +--- +# agentskills.io specification v1.0 +name: "integration-test-cerberus" +version: "1.0.0" +description: "Run Cerberus full-stack integration tests (WAF + rate limit + handler order). Use for local parity with CI Cerberus workflow." +author: "Charon Project" +license: "MIT" +tags: + - "integration" + - "security" + - "cerberus" + - "waf" + - "rate-limit" +compatibility: + os: + - "linux" + - "darwin" + shells: + - "bash" +requirements: + - name: "docker" + version: ">=24.0" + optional: false + - name: "curl" + version: ">=7.0" + optional: false +environment_variables: + - name: "CHARON_EMERGENCY_TOKEN" + description: "Emergency token required for some Cerberus teardown flows" + default: "" + required: false +parameters: + - name: "verbose" + type: "boolean" + description: "Enable verbose output" + default: "false" + required: false +outputs: + - name: "test_results" + type: "stdout" + description: "Cerberus integration test results" +metadata: + category: "integration-test" + subcategory: "cerberus" + execution_time: "medium" + risk_level: "medium" + ci_cd_safe: true + requires_network: true + idempotent: true +--- + +# Integration Test Cerberus + +## Overview + +Runs the Cerberus full-stack integration tests. This suite validates handler order, WAF enforcement, rate limiting behavior, and end-to-end request flow in a containerized environment. + +## Prerequisites + +- Docker 24.0 or higher installed and running +- curl 7.0 or higher for HTTP testing +- Network access for pulling container images + +## Usage + +### Basic Usage + +Run Cerberus integration tests: + +```bash +cd /path/to/charon +.github/skills/scripts/skill-runner.sh integration-test-cerberus +``` + +### Verbose Mode + +```bash +VERBOSE=1 .github/skills/scripts/skill-runner.sh integration-test-cerberus +``` + +### CI/CD Integration + +```yaml +- name: Run Cerberus Integration + run: .github/skills/scripts/skill-runner.sh integration-test-cerberus + timeout-minutes: 10 +``` + +## Parameters + +| Parameter | Type | Required | Default | Description | +|-----------|------|----------|---------|-------------| +| verbose | boolean | No | false | Enable verbose output | + +## Environment Variables + +| Variable | Required | Default | Description | +|----------|----------|---------|-------------| +| CHARON_EMERGENCY_TOKEN | No | (empty) | Emergency token for Cerberus teardown flows | +| SKIP_CLEANUP | No | false | Skip container cleanup after tests | +| TEST_TIMEOUT | No | 600 | Timeout in seconds for the test | + +## Outputs + +### Success Exit Code +- **0**: All Cerberus integration tests passed + +### Error Exit Codes +- **1**: One or more tests failed +- **2**: Docker environment setup failed +- **3**: Container startup timeout + +## Related Skills + +- [integration-test-all](./integration-test-all.SKILL.md) - Full integration suite +- [integration-test-coraza](./integration-test-coraza.SKILL.md) - Coraza WAF tests +- [integration-test-rate-limit](./integration-test-rate-limit.SKILL.md) - Rate limit tests + +## Notes + +- **Execution Time**: Medium execution (5-10 minutes typical) +- **CI Parity**: Matches the Cerberus integration workflow entrypoint + +--- + +**Last Updated**: 2026-02-07 +**Maintained by**: Charon Project Team +**Source**: `scripts/cerberus_integration.sh` diff --git a/.github/skills/integration-test-rate-limit-scripts/run.sh b/.github/skills/integration-test-rate-limit-scripts/run.sh new file mode 100755 index 00000000..8d472def --- /dev/null +++ b/.github/skills/integration-test-rate-limit-scripts/run.sh @@ -0,0 +1,10 @@ +#!/usr/bin/env bash +set -euo pipefail + +# Integration Test Rate Limit - Wrapper Script +# Tests rate limit integration + +SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" +PROJECT_ROOT="$(cd "${SCRIPT_DIR}/../../.." && pwd)" + +exec "${PROJECT_ROOT}/scripts/rate_limit_integration.sh" "$@" diff --git a/.github/skills/integration-test-rate-limit.SKILL.md b/.github/skills/integration-test-rate-limit.SKILL.md new file mode 100644 index 00000000..0a3e4b0c --- /dev/null +++ b/.github/skills/integration-test-rate-limit.SKILL.md @@ -0,0 +1,126 @@ +--- +# agentskills.io specification v1.0 +name: "integration-test-rate-limit" +version: "1.0.0" +description: "Run rate limit integration tests aligned with the CI rate-limit workflow. Use to validate 200/429 behavior and reset windows." +author: "Charon Project" +license: "MIT" +tags: + - "integration" + - "security" + - "rate-limit" + - "throttling" +compatibility: + os: + - "linux" + - "darwin" + shells: + - "bash" +requirements: + - name: "docker" + version: ">=24.0" + optional: false + - name: "curl" + version: ">=7.0" + optional: false +environment_variables: + - name: "RATE_LIMIT_REQUESTS" + description: "Requests allowed per window in the test" + default: "3" + required: false +parameters: + - name: "verbose" + type: "boolean" + description: "Enable verbose output" + default: "false" + required: false +outputs: + - name: "test_results" + type: "stdout" + description: "Rate limit integration test results" +metadata: + category: "integration-test" + subcategory: "rate-limit" + execution_time: "medium" + risk_level: "low" + ci_cd_safe: true + requires_network: true + idempotent: true +--- + +# Integration Test Rate Limit + +## Overview + +Runs the rate limit integration tests. This suite validates request throttling, HTTP 429 responses, Retry-After headers, and rate limit window resets. + +## Prerequisites + +- Docker 24.0 or higher installed and running +- curl 7.0 or higher for HTTP testing +- Network access for pulling container images + +## Usage + +### Basic Usage + +Run rate limit integration tests: + +```bash +cd /path/to/charon +.github/skills/scripts/skill-runner.sh integration-test-rate-limit +``` + +### Verbose Mode + +```bash +VERBOSE=1 .github/skills/scripts/skill-runner.sh integration-test-rate-limit +``` + +### CI/CD Integration + +```yaml +- name: Run Rate Limit Integration + run: .github/skills/scripts/skill-runner.sh integration-test-rate-limit + timeout-minutes: 7 +``` + +## Parameters + +| Parameter | Type | Required | Default | Description | +|-----------|------|----------|---------|-------------| +| verbose | boolean | No | false | Enable verbose output | + +## Environment Variables + +| Variable | Required | Default | Description | +|----------|----------|---------|-------------| +| RATE_LIMIT_REQUESTS | No | 3 | Allowed requests per window in the test | +| RATE_LIMIT_WINDOW_SEC | No | 10 | Window size in seconds | +| RATE_LIMIT_BURST | No | 1 | Burst size in tests | + +## Outputs + +### Success Exit Code +- **0**: All rate limit integration tests passed + +### Error Exit Codes +- **1**: One or more tests failed +- **2**: Docker environment setup failed +- **3**: Container startup timeout + +## Related Skills + +- [integration-test-all](./integration-test-all.SKILL.md) - Full integration suite +- [integration-test-cerberus](./integration-test-cerberus.SKILL.md) - Cerberus full stack tests + +## Notes + +- **Execution Time**: Medium execution (3-5 minutes typical) +- **CI Parity**: Matches the rate limit integration workflow entrypoint + +--- + +**Last Updated**: 2026-02-07 +**Maintained by**: Charon Project Team +**Source**: `scripts/rate_limit_integration.sh` diff --git a/.github/skills/integration-test-waf-scripts/run.sh b/.github/skills/integration-test-waf-scripts/run.sh new file mode 100644 index 00000000..0ed522e8 --- /dev/null +++ b/.github/skills/integration-test-waf-scripts/run.sh @@ -0,0 +1,10 @@ +#!/usr/bin/env bash +set -euo pipefail + +# Integration Test WAF - Wrapper Script +# Tests generic WAF integration + +SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" +PROJECT_ROOT="$(cd "${SCRIPT_DIR}/../../.." && pwd)" + +exec "${PROJECT_ROOT}/scripts/waf_integration.sh" "$@" diff --git a/.github/skills/integration-test-waf.SKILL.md b/.github/skills/integration-test-waf.SKILL.md new file mode 100644 index 00000000..e6dd64cb --- /dev/null +++ b/.github/skills/integration-test-waf.SKILL.md @@ -0,0 +1,101 @@ +--- +# agentskills.io specification v1.0 +name: "integration-test-waf" +version: "1.0.0" +description: "Test generic WAF integration behavior" +author: "Charon Project" +license: "MIT" +tags: + - "integration" + - "waf" + - "security" + - "testing" +compatibility: + os: + - "linux" + - "darwin" + shells: + - "bash" +requirements: + - name: "docker" + version: ">=24.0" + optional: false + - name: "curl" + version: ">=7.0" + optional: false +environment_variables: + - name: "WAF_MODE" + description: "Override WAF mode (monitor or block)" + default: "" + required: false +parameters: + - name: "verbose" + type: "boolean" + description: "Enable verbose output" + default: "false" + required: false +outputs: + - name: "test_results" + type: "stdout" + description: "WAF integration test results" +metadata: + category: "integration-test" + subcategory: "waf" + execution_time: "medium" + risk_level: "medium" + ci_cd_safe: true + requires_network: true + idempotent: true +--- + +# Integration Test WAF + +## Overview + +Tests the generic WAF integration behavior using the legacy WAF script. This test is kept for local verification and is not the CI WAF entrypoint (Coraza is the CI path). + +## Prerequisites + +- Docker 24.0 or higher installed and running +- curl 7.0 or higher for API testing + +## Usage + +Run the WAF integration tests: + +.github/skills/scripts/skill-runner.sh integration-test-waf + +## Parameters + +| Parameter | Type | Required | Default | Description | +|-----------|------|----------|---------|-------------| +| verbose | boolean | No | false | Enable verbose output | + +## Environment Variables + +| Variable | Required | Default | Description | +|----------|----------|---------|-------------| +| WAF_MODE | No | (script default) | Override WAF mode | + +## Outputs + +### Success Exit Code +- 0: All WAF integration tests passed + +### Error Exit Codes +- 1: One or more tests failed +- 2: Docker environment setup failed +- 3: Container startup timeout + +## Test Coverage + +This skill validates: + +1. WAF blocking behavior for common payloads +2. Allowed requests succeed + +--- + +**Last Updated**: 2026-02-07 +**Maintained by**: Charon Project Team +**Source**: `scripts/waf_integration.sh` diff --git a/.github/skills/test-e2e-playwright-coverage-scripts/run.sh b/.github/skills/test-e2e-playwright-coverage-scripts/run.sh index 39d7b8e0..42bf4b72 100755 --- a/.github/skills/test-e2e-playwright-coverage-scripts/run.sh +++ b/.github/skills/test-e2e-playwright-coverage-scripts/run.sh @@ -26,7 +26,7 @@ source "${SKILLS_SCRIPTS_DIR}/_environment_helpers.sh" PROJECT_ROOT="$(cd "${SCRIPT_DIR}/../../.." && pwd)" # Default parameter values -PROJECT="chromium" +PROJECT="firefox" VITE_PID="" VITE_PORT="${VITE_PORT:-5173}" # Default Vite port (avoids conflicts with common ports) BACKEND_URL="http://localhost:8080" @@ -52,7 +52,7 @@ parse_arguments() { shift ;; --project) - PROJECT="${2:-chromium}" + PROJECT="${2:-firefox}" shift 2 ;; --skip-vite) @@ -84,7 +84,7 @@ API calls to the Docker backend at localhost:8080. Options: --project=PROJECT Browser project to run (chromium, firefox, webkit) - Default: chromium + Default: firefox --skip-vite Skip starting Vite dev server (use existing server) -h, --help Show this help message diff --git a/.github/skills/test-e2e-playwright-coverage.SKILL.md b/.github/skills/test-e2e-playwright-coverage.SKILL.md index 2c610971..ea9fc52b 100644 --- a/.github/skills/test-e2e-playwright-coverage.SKILL.md +++ b/.github/skills/test-e2e-playwright-coverage.SKILL.md @@ -102,8 +102,8 @@ Run E2E tests with coverage collection: Run tests in a specific browser: ```bash -# Chromium (default) -.github/skills/scripts/skill-runner.sh test-e2e-playwright-coverage --project=chromium +# Firefox (default) +.github/skills/scripts/skill-runner.sh test-e2e-playwright-coverage --project=firefox # Firefox .github/skills/scripts/skill-runner.sh test-e2e-playwright-coverage --project=firefox @@ -131,7 +131,7 @@ For use in GitHub Actions or other CI/CD pipelines: | Parameter | Type | Required | Default | Description | |-----------|------|----------|---------|-------------| -| project | string | No | chromium | Browser project: chromium, firefox, webkit | +| project | string | No | firefox | Browser project: chromium, firefox, webkit | ## Environment Variables diff --git a/.github/skills/test-e2e-playwright-debug-scripts/run.sh b/.github/skills/test-e2e-playwright-debug-scripts/run.sh index b9bf44c9..b747c650 100755 --- a/.github/skills/test-e2e-playwright-debug-scripts/run.sh +++ b/.github/skills/test-e2e-playwright-debug-scripts/run.sh @@ -25,7 +25,7 @@ FILE="" GREP="" SLOWMO=500 INSPECTOR=false -PROJECT="chromium" +PROJECT="firefox" # Parse command-line arguments parse_arguments() { @@ -91,7 +91,7 @@ Options: --grep=PATTERN Filter tests by title pattern (regex) --slowmo=MS Delay between actions in milliseconds (default: 500) --inspector Open Playwright Inspector for step-by-step debugging - --project=PROJECT Browser to use: chromium, firefox, webkit (default: chromium) + --project=PROJECT Browser to use: chromium, firefox, webkit (default: firefox) -h, --help Show this help message Environment Variables: @@ -100,7 +100,7 @@ Environment Variables: DEBUG Verbose logging (e.g., 'pw:api') Examples: - run.sh # Debug all tests in Chromium + run.sh # Debug all tests in Firefox run.sh --file=login.spec.ts # Debug specific file run.sh --grep="login" # Debug tests matching pattern run.sh --inspector # Open Playwright Inspector diff --git a/.github/skills/test-e2e-playwright-scripts/run.sh b/.github/skills/test-e2e-playwright-scripts/run.sh index 395eac20..ced02a2b 100755 --- a/.github/skills/test-e2e-playwright-scripts/run.sh +++ b/.github/skills/test-e2e-playwright-scripts/run.sh @@ -22,7 +22,7 @@ source "${SKILLS_SCRIPTS_DIR}/_environment_helpers.sh" PROJECT_ROOT="$(cd "${SCRIPT_DIR}/../../.." && pwd)" # Default parameter values -PROJECT="chromium" +PROJECT="firefox" HEADED=false GREP="" @@ -35,7 +35,7 @@ parse_arguments() { shift ;; --project) - PROJECT="${2:-chromium}" + PROJECT="${2:-firefox}" shift 2 ;; --headed) @@ -71,7 +71,7 @@ Run Playwright E2E tests against the Charon application. Options: --project=PROJECT Browser project to run (chromium, firefox, webkit, all) - Default: chromium + Default: firefox --headed Run tests in headed mode (visible browser) --grep=PATTERN Filter tests by title pattern (regex) -h, --help Show this help message @@ -82,8 +82,8 @@ Environment Variables: CI Set to 'true' for CI environment Examples: - run.sh # Run all tests in Chromium (headless) - run.sh --project=firefox # Run in Firefox + run.sh # Run all tests in Firefox (headless) + run.sh --project=chromium # Run in Chromium run.sh --headed # Run with visible browser run.sh --grep="login" # Run only login tests run.sh --project=all --grep="smoke" # All browsers, smoke tests only diff --git a/.github/skills/test-e2e-playwright.SKILL.md b/.github/skills/test-e2e-playwright.SKILL.md index d3bb7877..9a3f51a1 100644 --- a/.github/skills/test-e2e-playwright.SKILL.md +++ b/.github/skills/test-e2e-playwright.SKILL.md @@ -103,7 +103,7 @@ Before running tests, ensure the Docker E2E environment is running: ### Basic Usage -Run E2E tests with default settings (Chromium, headless): +Run E2E tests with default settings (Firefox, headless): ```bash .github/skills/scripts/skill-runner.sh test-e2e-playwright @@ -114,8 +114,8 @@ Run E2E tests with default settings (Chromium, headless): Run tests in a specific browser: ```bash -# Chromium (default) -.github/skills/scripts/skill-runner.sh test-e2e-playwright --project=chromium +# Firefox (default) +.github/skills/scripts/skill-runner.sh test-e2e-playwright --project=firefox # Firefox .github/skills/scripts/skill-runner.sh test-e2e-playwright --project=firefox @@ -169,7 +169,7 @@ For use in GitHub Actions or other CI/CD pipelines: | Parameter | Type | Required | Default | Description | |-----------|------|----------|---------|-------------| -| project | string | No | chromium | Browser project: chromium, firefox, webkit, all | +| project | string | No | firefox | Browser project: chromium, firefox, webkit, all | | headed | boolean | No | false | Run with visible browser window | | grep | string | No | "" | Filter tests by title pattern (regex) | diff --git a/.github/workflows/docker-build.yml b/.github/workflows/docker-build.yml index 4803e186..12b4f78b 100644 --- a/.github/workflows/docker-build.yml +++ b/.github/workflows/docker-build.yml @@ -754,7 +754,7 @@ jobs: echo "✅ Container is healthy" - name: Run Integration Test timeout-minutes: 5 - run: ./scripts/integration-test.sh + run: .github/skills/scripts/skill-runner.sh integration-test-all - name: Check container logs if: always() diff --git a/.vscode/tasks.json b/.vscode/tasks.json index 39cdf4a8..db98b59b 100644 --- a/.vscode/tasks.json +++ b/.vscode/tasks.json @@ -105,7 +105,7 @@ { "label": "Test: E2E Playwright (Chromium) - Cerberus: Real-Time Logs", "type": "shell", - "command": "PLAYWRIGHT_HTML_OPEN=never npx playwright test --project=chromium tests/monitoring/real-time-logs.spec.ts", + "command": "PLAYWRIGHT_HTML_OPEN=never cd /projects/Charon npx playwright test --project=firefox tests/monitoring/real-time-logs.spec.ts", "group": "test", "problemMatcher": [], "presentation": { @@ -117,7 +117,7 @@ { "label": "Test: E2E Playwright (Chromium) - Cerberus: Security Dashboard", "type": "shell", - "command": "PLAYWRIGHT_HTML_OPEN=never npx playwright test --project=chromium tests/security/security-dashboard.spec.ts", + "command": "PLAYWRIGHT_HTML_OPEN=never cd /projects/Charon npx playwright test --project=firefox tests/security/security-dashboard.spec.ts", "group": "test", "problemMatcher": [], "presentation": { @@ -129,7 +129,7 @@ { "label": "Test: E2E Playwright (Chromium) - Cerberus: Rate Limiting", "type": "shell", - "command": "PLAYWRIGHT_HTML_OPEN=never npx playwright test --project=chromium tests/security/rate-limiting.spec.ts", + "command": "PLAYWRIGHT_HTML_OPEN=never cd /projects/Charon npx playwright test --project=firefox tests/security/rate-limiting.spec.ts", "group": "test", "problemMatcher": [], "presentation": { @@ -369,6 +369,20 @@ "group": "test", "problemMatcher": [] }, + { + "label": "Integration: Cerberus", + "type": "shell", + "command": ".github/skills/scripts/skill-runner.sh integration-test-cerberus", + "group": "test", + "problemMatcher": [] + }, + { + "label": "Integration: Cerberus Security Stack", + "type": "shell", + "command": ".github/skills/scripts/skill-runner.sh integration-test-cerberus", + "group": "test", + "problemMatcher": [] + }, { "label": "Integration: Coraza WAF", "type": "shell", @@ -376,6 +390,13 @@ "group": "test", "problemMatcher": [] }, + { + "label": "Integration: WAF (Legacy)", + "type": "shell", + "command": ".github/skills/scripts/skill-runner.sh integration-test-waf", + "group": "test", + "problemMatcher": [] + }, { "label": "Integration: CrowdSec", "type": "shell", @@ -397,6 +418,20 @@ "group": "test", "problemMatcher": [] }, + { + "label": "Integration: Rate Limit", + "type": "shell", + "command": ".github/skills/scripts/skill-runner.sh integration-test-rate-limit", + "group": "test", + "problemMatcher": [] + }, + { + "label": "Integration: Rate Limiting", + "type": "shell", + "command": ".github/skills/scripts/skill-runner.sh integration-test-rate-limit", + "group": "test", + "problemMatcher": [] + }, { "label": "Utility: Check Version Match Tag", "type": "shell", @@ -520,57 +555,6 @@ "close": false } }, - { - "label": "Open: App in Simple Browser (Docker E2E)", - "type": "shell", - "dependsOn": ["Docker: Rebuild E2E Environment"], - "command": "bash -lc 'printf "Waiting for Charon at http://localhost:8080...\n"; for i in {1..60}; do if curl -fsS http://localhost:8080/ >/dev/null 2>&1; then echo "Ready: http://localhost:8080"; exit 0; fi; sleep 1; done; echo "Timed out waiting for http://localhost:8080"; exit 1'", - "group": "test", - "problemMatcher": [], - "presentation": { - "reveal": "always", - "panel": "dedicated", - "echo": true, - "close": false - } - }, - { - "label": "Open: App in System Browser (Docker E2E)", - "type": "shell", - "dependsOn": ["Docker: Rebuild E2E Environment"], - "command": "bash -lc '\\ - printf "Waiting for Charon at http://localhost:8080...\\n"; \ - for i in {1..60}; do \ - if curl -fsS http://localhost:8080/ >/dev/null 2>&1; then echo "Ready: http://localhost:8080"; break; fi; \ - sleep 1; \ - done; \ - if command -v xdg-open >/dev/null 2>&1; then xdg-open http://localhost:8080 >/dev/null 2>&1 & disown; \ - elif command -v sensible-browser >/dev/null 2>&1; then sensible-browser http://localhost:8080 >/dev/null 2>&1 & disown; \ - elif command -v gio >/dev/null 2>&1; then gio open http://localhost:8080 >/dev/null 2>&1 & disown; \ - elif command -v open >/dev/null 2>&1; then open http://localhost:8080 >/dev/null 2>&1 & disown; \ - else echo "No known browser opener found. Open http://localhost:8080 manually."; fi'", - "group": "test", - "problemMatcher": [], - "presentation": { - "reveal": "always", - "panel": "dedicated", - "echo": true, - "close": false - } - }, - { - "label": "Record: Playwright codegen (Docker E2E)", - "type": "shell", - "dependsOn": ["Docker: Rebuild E2E Environment"], - "command": "bash -lc 'npx playwright codegen http://localhost:8080 --output=tests/recorded.from_codegen.spec.ts'", - "group": "test", - "problemMatcher": [], - "presentation": { - "reveal": "always", - "panel": "dedicated", - "close": false - } - }, { "label": "Test: E2E Playwright (Debug Mode)", "type": "shell",