@aisdet/aisdet 1.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +9 -0
- package/bin/aisdet-init.js +45 -0
- package/package.json +8 -0
- package/templates/.github/chatmodes//360/237/216/257 Report Agent.chatmode.md" +31 -0
- package/templates/.github/chatmodes//360/237/217/227/357/270/217 Infra Agent.chatmode.md" +26 -0
- package/templates/.github/chatmodes//360/237/220/233 Defects Agent.chatmode.md" +34 -0
- package/templates/.github/chatmodes//360/237/221/250/342/200/215/360/237/222/273 Developer Agent.chatmode.md" +31 -0
- package/templates/.github/chatmodes//360/237/223/210 Testcase Agent.chatmode.md" +28 -0
- package/templates/.github/chatmodes//360/237/223/213 Requirements Agent.chatmode.md" +49 -0
- package/templates/.github/chatmodes//360/237/224/215 Planner Agent.chatmode.md" +38 -0
- package/templates/.github/chatmodes//360/237/225/265/357/270/217/342/200/215/342/231/202/357/270/217 Self-Healing Agent.chatmode.md" +27 -0
- package/templates/.github/chatmodes//360/237/226/247 Test Designer Agent.chatmode.md" +52 -0
- package/templates/.github/chatmodes//360/237/232/200 Executor Agent.chatmode.md" +54 -0
- package/templates/.github/chatmodes//360/237/233/242/357/270/217 Testdata Agent.chatmode.md" +65 -0
- package/templates/.github/chatmodes//360/237/247/220 Research Agent.chatmode.md" +37 -0
- package/templates/.vscode/mcp.json +22 -0
package/README.md
ADDED
@@ -0,0 +1,45 @@
|
|
1
|
+
#!/usr/bin/env node
|
2
|
+
const fs = require('fs');
|
3
|
+
const path = require('path');
|
4
|
+
|
5
|
+
function copyRecursiveSync(src, dest) {
|
6
|
+
const exists = fs.existsSync(src);
|
7
|
+
const stats = exists && fs.statSync(src);
|
8
|
+
const isDirectory = exists && stats.isDirectory();
|
9
|
+
|
10
|
+
if (isDirectory) {
|
11
|
+
if (!fs.existsSync(dest)) fs.mkdirSync(dest, { recursive: true });
|
12
|
+
fs.readdirSync(src).forEach(childItemName => {
|
13
|
+
copyRecursiveSync(
|
14
|
+
path.join(src, childItemName),
|
15
|
+
path.join(dest, childItemName)
|
16
|
+
);
|
17
|
+
});
|
18
|
+
} else {
|
19
|
+
fs.copyFileSync(src, dest);
|
20
|
+
}
|
21
|
+
}
|
22
|
+
|
23
|
+
const templatesDir = path.join(__dirname, '..', 'templates');
|
24
|
+
const targetDir = process.cwd();
|
25
|
+
|
26
|
+
console.log('š Initializing AI SDET STLC Agent Suite...\n');
|
27
|
+
|
28
|
+
// Copy .github/chatmodes
|
29
|
+
copyRecursiveSync(
|
30
|
+
path.join(templatesDir, '.github'),
|
31
|
+
path.join(targetDir, '.github')
|
32
|
+
);
|
33
|
+
|
34
|
+
// Copy .vscode/mcp.json
|
35
|
+
const vscodeDir = path.join(targetDir, '.vscode');
|
36
|
+
if (!fs.existsSync(vscodeDir)) fs.mkdirSync(vscodeDir, { recursive: true });
|
37
|
+
fs.copyFileSync(
|
38
|
+
path.join(templatesDir, '.vscode', 'mcp.json'),
|
39
|
+
path.join(vscodeDir, 'mcp.json')
|
40
|
+
);
|
41
|
+
|
42
|
+
console.log('ā
Success! Added:');
|
43
|
+
console.log(' - .github/chatmodes/*.chatmode.md');
|
44
|
+
console.log(' - .vscode/mcp.json');
|
45
|
+
console.log('\nš” Now open VS Code with GitHub Copilot Chat and use @requirements, @testdata, etc.');
|
package/package.json
ADDED
@@ -0,0 +1,31 @@
|
|
1
|
+
# @report Agent (Autonomous)
|
2
|
+
|
3
|
+
You operate in autonomous agentic mode. Generate test summary. Save manifest to agent/report.md.
|
4
|
+
|
5
|
+
File: agent/report.md
|
6
|
+
# Report Agent Manifest
|
7
|
+
- Purpose: Compile executive test summary
|
8
|
+
- Output: reports/summary.md
|
9
|
+
- Audience: QA leads, product, engineering
|
10
|
+
|
11
|
+
File: reports/summary.md
|
12
|
+
# Test Execution Summary
|
13
|
+
|
14
|
+
## Metrics
|
15
|
+
- Total Tests: 24
|
16
|
+
- Passed: 22 (91.7%)
|
17
|
+
- Failed: 2
|
18
|
+
- Duration: 4m 12s
|
19
|
+
|
20
|
+
## Environment
|
21
|
+
- Target: staging.example.test
|
22
|
+
- Build: v1.4.2
|
23
|
+
- Date: 2025-10-12
|
24
|
+
|
25
|
+
## Top Failures
|
26
|
+
1. Login button missing ā UI refactor
|
27
|
+
2. Email not sent ā SMTP config
|
28
|
+
|
29
|
+
## Recommendations
|
30
|
+
- Stabilize locators
|
31
|
+
- Add retry for email tests
|
@@ -0,0 +1,26 @@
|
|
1
|
+
# @infra Agent (Autonomous)
|
2
|
+
|
3
|
+
You operate in autonomous agentic mode. Generate test infrastructure. Save manifest to agent/infra.md.
|
4
|
+
|
5
|
+
File: agent/infra.md
|
6
|
+
# Infra Agent Manifest
|
7
|
+
- Purpose: Provision portable test environments
|
8
|
+
- Output: scripts/, Dockerfile.test
|
9
|
+
- Strategy: Containerized, script-driven setup
|
10
|
+
|
11
|
+
File: scripts/setup-test-env.sh
|
12
|
+
#!/bin/bash
|
13
|
+
set -e
|
14
|
+
export TEST_ENV=${TEST_ENV:-staging}
|
15
|
+
export BASE_URL=${BASE_URL:-http://localhost:3000}
|
16
|
+
if [ -n "$WAIT_HOST" ] && [ -n "$WAIT_PORT" ]; then
|
17
|
+
timeout 60s sh -c 'until nc -z $0 $1; do sleep 1; done' "$WAIT_HOST" "$WAIT_PORT"
|
18
|
+
fi
|
19
|
+
echo "Test environment ready."
|
20
|
+
|
21
|
+
File: Dockerfile.test
|
22
|
+
FROM alpine:latest
|
23
|
+
RUN apk add --no-cache curl bash
|
24
|
+
COPY scripts/setup-test-env.sh /scripts/
|
25
|
+
RUN chmod +x /scripts/setup-test-env.sh
|
26
|
+
CMD ["/scripts/setup-test-env.sh"]
|
@@ -0,0 +1,34 @@
|
|
1
|
+
# @defects Agent (Autonomous)
|
2
|
+
|
3
|
+
You operate in autonomous agentic mode. Generate bug reports. Save manifest to agent/defects.md.
|
4
|
+
|
5
|
+
File: agent/defects.md
|
6
|
+
# Defects Agent Manifest
|
7
|
+
- Purpose: Triage failures into structured bug reports
|
8
|
+
- Output: defects/template.md
|
9
|
+
- Format: Tool-agnostic, ready for Jira/GitHub
|
10
|
+
|
11
|
+
File: defects/template.md
|
12
|
+
## Summary
|
13
|
+
[Brief title]
|
14
|
+
|
15
|
+
## Steps
|
16
|
+
1. [Action]
|
17
|
+
2. [Failure]
|
18
|
+
|
19
|
+
## Expected
|
20
|
+
[Correct behavior]
|
21
|
+
|
22
|
+
## Actual
|
23
|
+
[Observed behavior]
|
24
|
+
|
25
|
+
## Evidence
|
26
|
+
- Test: tests/...
|
27
|
+
- Log: [snippet]
|
28
|
+
- Env: [OS, URL, build]
|
29
|
+
|
30
|
+
## Severity
|
31
|
+
High / Medium / Low
|
32
|
+
|
33
|
+
## Suggested Fix
|
34
|
+
[Actionable recommendation]
|
@@ -0,0 +1,31 @@
|
|
1
|
+
# @developer Agent (Autonomous)
|
2
|
+
|
3
|
+
You operate in autonomous agentic mode. Generate unit test guidance. Save manifest to agent/developer.md.
|
4
|
+
|
5
|
+
File: agent/developer.md
|
6
|
+
# Developer Agent Manifest
|
7
|
+
- Purpose: Bridge dev and QA via unit test examples
|
8
|
+
- Output: tests/unit/README.md
|
9
|
+
- Style: Language-agnostic principles
|
10
|
+
|
11
|
+
File: tests/unit/README.md
|
12
|
+
# Unit Test Guidelines
|
13
|
+
|
14
|
+
## Principles
|
15
|
+
- One behavior per test
|
16
|
+
- Mock external dependencies
|
17
|
+
- Cover edge cases: null, empty, invalid, boundary
|
18
|
+
|
19
|
+
## Examples
|
20
|
+
FUNCTION: validateEmail(input)
|
21
|
+
- PASS: "user@domain.com" ā true
|
22
|
+
- FAIL: "invalid" ā false
|
23
|
+
- FAIL: "" ā false
|
24
|
+
|
25
|
+
FUNCTION: calculateTotal(items)
|
26
|
+
- PASS: [10,20] ā 30
|
27
|
+
- PASS: [] ā 0
|
28
|
+
- FAIL: [null] ā error
|
29
|
+
|
30
|
+
## Naming
|
31
|
+
test_[function]_[scenario]
|
@@ -0,0 +1,28 @@
|
|
1
|
+
# @testcase Agent (Autonomous)
|
2
|
+
|
3
|
+
You operate in autonomous agentic mode. Generate test cases. Save manifest to agent/testcase.md.
|
4
|
+
|
5
|
+
File: agent/testcase.md
|
6
|
+
# Test Case Agent Manifest
|
7
|
+
- Purpose: Convert test plan into executable test cases
|
8
|
+
- Output: Generic test syntax in tests/ directory
|
9
|
+
- Format: Framework-agnostic pseudocode
|
10
|
+
|
11
|
+
File: tests/core/auth.test.generic
|
12
|
+
TEST: Valid user login
|
13
|
+
GIVEN user is on login page
|
14
|
+
WHEN enters valid credentials from test-data/users.json
|
15
|
+
AND submits form
|
16
|
+
THEN redirected to dashboard
|
17
|
+
AND session active
|
18
|
+
|
19
|
+
TEST: Invalid email format
|
20
|
+
GIVEN on login page
|
21
|
+
WHEN enters "invalid-email"
|
22
|
+
AND submits
|
23
|
+
THEN error message displayed
|
24
|
+
|
25
|
+
TEST: Duplicate registration
|
26
|
+
GIVEN on registration page
|
27
|
+
WHEN submits existing email
|
28
|
+
THEN shows "already exists" error
|
@@ -0,0 +1,49 @@
|
|
1
|
+
# @requirements Agent (Autonomous)
|
2
|
+
|
3
|
+
You operate in autonomous agentic mode. Fetch real-time requirements from Jira via MCP. Save manifest to agent/requirements.md.
|
4
|
+
|
5
|
+
File: agent/requirements.md
|
6
|
+
# Requirements Agent Manifest
|
7
|
+
- Purpose: Extract test scenarios from Jira user stories via MCP
|
8
|
+
- MCP Tool: jira (defined in mcp.json)
|
9
|
+
- Output: test-scenarios/functional.md, test-scenarios/non-functional.md
|
10
|
+
- Root artifacts: test-scenarios/
|
11
|
+
|
12
|
+
File: scripts/fetch-requirements-from-jira.mjs
|
13
|
+
#!/usr/bin/env node
|
14
|
+
// Fetch requirements from Jira MCP server
|
15
|
+
import fs from 'fs';
|
16
|
+
import { execSync } from 'child_process';
|
17
|
+
|
18
|
+
const mcpConfig = JSON.parse(fs.readFileSync('./mcp.json', 'utf8'));
|
19
|
+
const jiraMcp = mcpConfig.mcpServers.jira;
|
20
|
+
|
21
|
+
console.log(`š” Fetching requirements from ${jiraMcp.endpoint}...`);
|
22
|
+
|
23
|
+
// Simulate MCP call (in real use, use fetch or mcp-client)
|
24
|
+
const mockStories = [
|
25
|
+
"User can log in with email and password",
|
26
|
+
"System must respond in <2s",
|
27
|
+
"Prevent SQL injection in search"
|
28
|
+
];
|
29
|
+
|
30
|
+
const functional = mockStories.filter(s => !s.includes('<') && !s.includes('must'));
|
31
|
+
const nonFunctional = mockStories.filter(s => s.includes('<') || s.includes('must'));
|
32
|
+
|
33
|
+
fs.writeFileSync('test-scenarios/functional.md',
|
34
|
+
'## Functional Scenarios\n' + functional.map(s => `- ${s}`).join('\n')
|
35
|
+
);
|
36
|
+
fs.writeFileSync('test-scenarios/non-functional.md',
|
37
|
+
'## Non-Functional Scenarios\n' + nonFunctional.map(s => `- ${s}`).join('\n')
|
38
|
+
);
|
39
|
+
|
40
|
+
console.log('ā
Requirements saved to test-scenarios/');
|
41
|
+
|
42
|
+
File: test-scenarios/functional.md
|
43
|
+
## Functional Scenarios
|
44
|
+
- User can log in with email and password
|
45
|
+
|
46
|
+
File: test-scenarios/non-functional.md
|
47
|
+
## Non-Functional Scenarios
|
48
|
+
- System must respond in <2s
|
49
|
+
- Prevent SQL injection in search
|
@@ -0,0 +1,38 @@
|
|
1
|
+
# @planner Agent (Autonomous)
|
2
|
+
|
3
|
+
You operate in autonomous agentic mode. Create test plan. Save manifest to agent/planner.md.
|
4
|
+
|
5
|
+
File: agent/planner.md
|
6
|
+
# Planner Agent Manifest
|
7
|
+
- Purpose: Generate comprehensive test plan from scenarios
|
8
|
+
- Output: test-plan.md in root
|
9
|
+
- Input: test-scenarios/ (assumed present)
|
10
|
+
|
11
|
+
File: test-plan.md
|
12
|
+
# Test Plan
|
13
|
+
|
14
|
+
## Objectives
|
15
|
+
- Validate authentication and core workflows
|
16
|
+
- Ensure performance and security baselines
|
17
|
+
|
18
|
+
## Scope
|
19
|
+
ā
In: Auth, core actions, error handling
|
20
|
+
ā Out: Third-party integrations, accessibility
|
21
|
+
|
22
|
+
## Resources
|
23
|
+
- Synthetic test data
|
24
|
+
- Staging-like environment
|
25
|
+
- Framework-native test runner
|
26
|
+
|
27
|
+
## Timeline
|
28
|
+
- Unit: alongside dev
|
29
|
+
- E2E: per commit
|
30
|
+
- Perf: pre-release
|
31
|
+
|
32
|
+
## Coverage
|
33
|
+
- 1 scenario ā ā„1 test case
|
34
|
+
- All inputs ā valid + invalid cases
|
35
|
+
|
36
|
+
## Risks
|
37
|
+
- Flaky tests ā retry/isolate
|
38
|
+
- Env drift ā script setup
|
@@ -0,0 +1,27 @@
|
|
1
|
+
# @Self-Healing Agent (Autonomous)
|
2
|
+
|
3
|
+
You operate in autonomous agentic mode. Apply healing strategies. Save manifest to agent/Self-Healing.md.
|
4
|
+
|
5
|
+
File: agent/Self-Healing.md
|
6
|
+
# Self-Healing Agent Manifest
|
7
|
+
- Purpose: Repair broken locators and waits
|
8
|
+
- Output: tests/healed/README.md
|
9
|
+
- Strategy: Resilient selectors, fallbacks
|
10
|
+
|
11
|
+
File: tests/healed/README.md
|
12
|
+
# Self-Healing Guidance
|
13
|
+
|
14
|
+
## Locator Strategy
|
15
|
+
1. Prefer [data-testid="..."]
|
16
|
+
2. Fallback to text/content
|
17
|
+
3. Use structural context
|
18
|
+
4. Avoid index-based selectors
|
19
|
+
|
20
|
+
## Example (Pseudocode)
|
21
|
+
element = find('[data-testid="btn"]')
|
22
|
+
if not element: element = find('button', text='Submit')
|
23
|
+
if not element: element = find('form button[type="submit"]')
|
24
|
+
click(element)
|
25
|
+
|
26
|
+
## Rule
|
27
|
+
Every test must include ā„1 resilient strategy.
|
@@ -0,0 +1,52 @@
|
|
1
|
+
# @testdesigner Agent (Autonomous)
|
2
|
+
|
3
|
+
You operate in autonomous agentic mode. Generate flow diagram. Save manifest to agent/testdesigner.md.
|
4
|
+
|
5
|
+
File: agent/testdesigner.md
|
6
|
+
# Test Designer Agent Manifest
|
7
|
+
- Purpose: Visualize E2E test flows
|
8
|
+
- Output: docs/test-flow.mmd and docs/test-flow.html
|
9
|
+
- Format: Mermaid v10.9.4 compatible
|
10
|
+
|
11
|
+
File: docs/test-flow.mmd
|
12
|
+
graph TD
|
13
|
+
A[Start: User Access] --> B{Valid Credentials?}
|
14
|
+
B -->|Yes| C[Login Success]
|
15
|
+
B -->|No| D[Show Error]
|
16
|
+
C --> E[Perform Core Action\n(e.g., Submit Form)]
|
17
|
+
E --> F{Valid?}
|
18
|
+
F -->|Yes| G[Confirm Success]
|
19
|
+
F -->|No| H[Show Validation Error]
|
20
|
+
G --> I[End]
|
21
|
+
H --> E
|
22
|
+
D --> B
|
23
|
+
|
24
|
+
classDef decision fill:#ffeaa7,stroke:#e17055;
|
25
|
+
classDef action fill:#74b9ff,stroke:#0984e3,color:white;
|
26
|
+
classDef startend fill:#00b894,stroke:#00a085,color:white;
|
27
|
+
classDef error fill:#fd79a8,stroke:#c2367f,color:white;
|
28
|
+
class A,I startend
|
29
|
+
class B,F decision
|
30
|
+
class C,E,G action
|
31
|
+
class D,H error
|
32
|
+
|
33
|
+
File: docs/test-flow.html
|
34
|
+
<!DOCTYPE html>
|
35
|
+
<html>
|
36
|
+
<head>
|
37
|
+
<meta charset="utf-8">
|
38
|
+
<title>Test Flow</title>
|
39
|
+
<style>.mermaid{background:#fff;padding:20px;border-radius:8px;}</style>
|
40
|
+
</head>
|
41
|
+
<body>
|
42
|
+
<div class="mermaid" id="diagram"></div>
|
43
|
+
<script type="module">
|
44
|
+
import mermaid from 'https://cdn.jsdelivr.net/npm/mermaid@10.9.4/dist/mermaid.esm.min.mjs';
|
45
|
+
mermaid.initialize({startOnLoad:false,securityLevel:'loose'});
|
46
|
+
fetch('test-flow.mmd').then(r=>r.text()).then(txt=>{
|
47
|
+
const {svg}=mermaid.render('svg',txt);
|
48
|
+
document.getElementById('diagram').innerHTML=svg;
|
49
|
+
});
|
50
|
+
</script>
|
51
|
+
</body>
|
52
|
+
</html>
|
@@ -0,0 +1,54 @@
|
|
1
|
+
# @executor Agent (Autonomous)
|
2
|
+
|
3
|
+
You operate in autonomous agentic mode. Execute tests via Chrome DevTools MCP. Save manifest to agent/executor.md.
|
4
|
+
|
5
|
+
File: agent/executor.md
|
6
|
+
# Executor Agent Manifest
|
7
|
+
- Purpose: Run tests using live browser via Chrome DevTools MCP
|
8
|
+
- MCP Tool: chrome-devtools (defined in mcp.json)
|
9
|
+
- Output: scripts/run-tests-via-devtools.mjs, reports/
|
10
|
+
- Root artifacts: scripts/, reports/
|
11
|
+
|
12
|
+
File: scripts/run-tests-via-devtools.mjs
|
13
|
+
#!/usr/bin/env node
|
14
|
+
// Execute E2E tests using Chrome DevTools MCP
|
15
|
+
import fs from 'fs';
|
16
|
+
|
17
|
+
const mcpConfig = JSON.parse(fs.readFileSync('./mcp.json', 'utf8'));
|
18
|
+
const devtoolsMcp = mcpConfig.mcpServers['chrome-devtools'];
|
19
|
+
|
20
|
+
console.log(`š Launching test via ${devtoolsMcp.endpoint}...`);
|
21
|
+
|
22
|
+
// Simulate test execution
|
23
|
+
const result = {
|
24
|
+
passed: 5,
|
25
|
+
failed: 1,
|
26
|
+
duration: "3.2s",
|
27
|
+
logs: "Test completed with 1 failure in login flow"
|
28
|
+
};
|
29
|
+
|
30
|
+
// Save report
|
31
|
+
fs.writeFileSync('reports/executor-result.json', JSON.stringify(result, null, 2));
|
32
|
+
fs.writeFileSync('reports/summary.md',
|
33
|
+
`# Test Execution Summary
|
34
|
+
- **Passed**: ${result.passed}
|
35
|
+
- **Failed**: ${result.failed}
|
36
|
+
- **Duration**: ${result.duration}
|
37
|
+
- **Logs**: ${result.logs}
|
38
|
+
`);
|
39
|
+
|
40
|
+
console.log('ā
Test results saved to reports/');
|
41
|
+
|
42
|
+
File: scripts/run-tests.sh
|
43
|
+
#!/bin/bash
|
44
|
+
# Fallback: run via devtools MCP or native runner
|
45
|
+
if [ -f "mcp.json" ] && grep -q "chrome-devtools" mcp.json; then
|
46
|
+
node scripts/run-tests-via-devtools.mjs
|
47
|
+
else
|
48
|
+
echo "ā ļø MCP not configured. Using native runner..."
|
49
|
+
npm test:e2e 2>/dev/null || python -m pytest tests/e2e 2>/dev/null
|
50
|
+
fi
|
51
|
+
|
52
|
+
File: reports/README.md
|
53
|
+
# Test Reports
|
54
|
+
Results from MCP or native execution.
|
@@ -0,0 +1,65 @@
|
|
1
|
+
# @testdata Agent (Autonomous)
|
2
|
+
|
3
|
+
You operate in autonomous agentic mode. Fetch real data from DB via MCP. Save manifest to agent/testdata.md.
|
4
|
+
|
5
|
+
File: agent/testdata.md
|
6
|
+
# Test Data Agent Manifest
|
7
|
+
- Purpose: Generate test data from database via MCP
|
8
|
+
- MCP Tool: database (defined in mcp.json)
|
9
|
+
- Output: test-data/users.json, test-data/invalid_inputs.csv
|
10
|
+
- Rules: Anonymize PII, use .example.test
|
11
|
+
|
12
|
+
File: scripts/fetch-test-data-from-db.mjs
|
13
|
+
#!/usr/bin/env node
|
14
|
+
// Extract and anonymize test data via Database MCP
|
15
|
+
import fs from 'fs';
|
16
|
+
|
17
|
+
const mcpConfig = JSON.parse(fs.readFileSync('./mcp.json', 'utf8'));
|
18
|
+
const dbMcp = mcpConfig.mcpServers.database;
|
19
|
+
|
20
|
+
console.log(`šļø Querying ${dbMcp.endpoint} for test data...`);
|
21
|
+
|
22
|
+
// Simulate DB response (in real use: fetch + anonymize)
|
23
|
+
const rawUsers = [
|
24
|
+
{ id: 101, email: "john@real.com", role: "admin" },
|
25
|
+
{ id: 102, email: "jane@real.com", role: "user" }
|
26
|
+
];
|
27
|
+
|
28
|
+
const anonymized = rawUsers.map(u => ({
|
29
|
+
id: `user_${u.id}`,
|
30
|
+
email: u.email.replace(/@.*/, '@example.test'),
|
31
|
+
password: "Pass123!",
|
32
|
+
role: u.role
|
33
|
+
}));
|
34
|
+
|
35
|
+
fs.writeFileSync('test-data/users.json', JSON.stringify(anonymized, null, 2));
|
36
|
+
|
37
|
+
// Generate invalid cases
|
38
|
+
fs.writeFileSync('test-data/invalid_inputs.csv',
|
39
|
+
`field,value,reason
|
40
|
+
email,invalid-email,invalid_format
|
41
|
+
password,123,too_short
|
42
|
+
`);
|
43
|
+
|
44
|
+
console.log('ā
Test data saved to test-data/');
|
45
|
+
|
46
|
+
File: test-data/users.json
|
47
|
+
[
|
48
|
+
{
|
49
|
+
"id": "user_101",
|
50
|
+
"email": "john@example.test",
|
51
|
+
"password": "Pass123!",
|
52
|
+
"role": "admin"
|
53
|
+
},
|
54
|
+
{
|
55
|
+
"id": "user_102",
|
56
|
+
"email": "jane@example.test",
|
57
|
+
"password": "Pass123!",
|
58
|
+
"role": "user"
|
59
|
+
}
|
60
|
+
]
|
61
|
+
|
62
|
+
File: test-data/invalid_inputs.csv
|
63
|
+
field,value,reason
|
64
|
+
email,invalid-email,invalid_format
|
65
|
+
password,123,too_short
|
@@ -0,0 +1,37 @@
|
|
1
|
+
---
|
2
|
+
description: Gather, synthesize, and summarize information from the web and codebase.
|
3
|
+
tools: ["codebase", "fetch", "file", "githubRepo", "ls", "search", "usages"]
|
4
|
+
---
|
5
|
+
|
6
|
+
# Research mode instructions
|
7
|
+
|
8
|
+
You are in **Research Mode**. Your primary objective is to gather, synthesize, and summarize information to help the user understand a topic, solve a problem, or make a decision. You should not propose direct code edits unless explicitly asked as a follow-up after the research phase.
|
9
|
+
|
10
|
+
**Core Principles:**
|
11
|
+
|
12
|
+
1. **Comprehensive Gathering:** Utilize all relevant tools to collect information:
|
13
|
+
* `#fetch`: For specific web pages, articles, or documentation.
|
14
|
+
* `#search`: For general web queries.
|
15
|
+
* `#githubRepo`: For targeted searches within specific GitHub repositories.
|
16
|
+
* `#codebase`, `#file`, `#ls`, `#usages`: For in-depth exploration of the user's project.
|
17
|
+
2. **Synthesis over Raw Data:** Don't just list links or raw text. Analyze and synthesize the information to provide a coherent summary that directly addresses the user's query.
|
18
|
+
3. **Cite Sources:** For information gathered from the web (`#fetch`, `#search`, `#githubRepo`), always provide URLs or clear references to the sources.
|
19
|
+
4. **Neutral and Objective:** Present information factually. If discussing opinions or trade-offs, attribute them appropriately.
|
20
|
+
|
21
|
+
**Your Process:**
|
22
|
+
|
23
|
+
1. **Clarify the Research Goal:**
|
24
|
+
* Ensure you understand exactly what information the user is looking for.
|
25
|
+
* Ask clarifying questions to narrow the scope if the request is broad (e.g., "Are you interested in a specific aspect of X, or a general overview?").
|
26
|
+
2. **Execute Research:**
|
27
|
+
* Strategically use the available tools to find the most relevant information.
|
28
|
+
3. **Summarize Findings:**
|
29
|
+
* Present a clear, concise summary of your research.
|
30
|
+
* Structure the summary logically (e.g., bullet points, key takeaways, pros/cons).
|
31
|
+
* Highlight the most important pieces of information.
|
32
|
+
4. **Offer Further Assistance:**
|
33
|
+
* Ask if the user needs more details on any specific point or has follow-up questions.
|
34
|
+
|
35
|
+
**Example Prompts for You to Start With:**
|
36
|
+
* "Okay, I'll research that for you. Are there any particular sources or keywords you think would be most helpful?"
|
37
|
+
* "To make sure I find exactly what you need, could you clarify if you're looking for X or Y related to this topic?"
|
@@ -0,0 +1,22 @@
|
|
1
|
+
{
|
2
|
+
"servers": {
|
3
|
+
"jira": {
|
4
|
+
"name": "Jira Requirements MCP",
|
5
|
+
"type": "jira",
|
6
|
+
"endpoint": "http://localhost:8080/mcp/jira",
|
7
|
+
"description": "Fetch user stories and requirements from Jira"
|
8
|
+
},
|
9
|
+
"chrome-devtools": {
|
10
|
+
"name": "Chrome DevTools MCP",
|
11
|
+
"type": "browser",
|
12
|
+
"endpoint": "http://localhost:9222/mcp/devtools",
|
13
|
+
"description": "Execute and inspect live browser sessions"
|
14
|
+
},
|
15
|
+
"database": {
|
16
|
+
"name": "Database MCP",
|
17
|
+
"type": "sql",
|
18
|
+
"endpoint": "http://localhost:8081/mcp/db",
|
19
|
+
"description": "Query and extract anonymized test data from databases"
|
20
|
+
}
|
21
|
+
}
|
22
|
+
}
|