skills-ws
Version:
87 agent skills for AI coding assistants — marketing, growth, web3, dev, design & operations. Built for OpenClaw, Claude Code, Cursor, and Codex.
71 lines (56 loc) • 1.93 kB
Markdown
- 6. Post-Pentest Workflow
- Triage → Fix → Verify
- Regression Testing
```
1. TRIAGE (Day 0)
├── Read the full report
├── Verify all Critical/High PoCs manually
├── Create tickets with severity labels
├── Assign owners and deadlines
└── Notify stakeholders for Critical findings
2. FIX (Day 1-14, based on severity)
├── Critical: same day
├── High: within 48 hours
├── Medium: within 2 weeks
└── Low: next sprint
3. VERIFY (After fix)
├── Re-run Shannon against the same workspace (resume: reuse -w and the same -u URL)
│ └── npx @keygraph/shannon start -u <url> -r <repo> -w <same-name>
├── Completed agents are skipped (resumable)
├── Confirm the PoC no longer works
└── Update ticket status
4. DOCUMENT
├── Archive the report
├── Update security runbook with new patterns
├── Add regression tests for each finding
└── Schedule next pentest
```
### Regression Testing
For each finding, create a permanent test:
```javascript
// tests/security/sql-injection.test.ts
describe('SQL Injection regression', () => {
it('should not be vulnerable to union-based injection in /api/users/search', async () => {
const res = await request(app)
.get("/api/users/search")
.query({ q: "' UNION SELECT username,password,NULL FROM users--" });
// Should NOT return other users' data
expect(res.body).not.toEqual(
expect.arrayContaining([
expect.objectContaining({ username: 'admin' })
])
);
});
it('should use parameterized queries', async () => {
const res = await request(app)
.get("/api/users/search")
.query({ q: "test" });
expect(res.status).toBe(200);
// Normal search should still work
});
});
```
---