knowledge-persistence — independently scanned and version-tracked by SaferSkills.
SaferSkills independently audited knowledge-persistence (Agent Skill) and scored it 100/100 (green). The audit ran 55 deterministic rules across Security, Supply Chain, Maintenance, Transparency, and Community; it found 0 high-severity and 0 lower-severity findings. The full rule-by-rule trace and per-finding evidence are below. Free, methodology-open.
Findings & checks · 0 flagged
Every scanned point with the score it earned and what moved between them.
First recorded scan — no prior version to compare against.
The primary manifest — the file an agent reads to learn what this artifact does.
Knowledge persistence is about capturing what you learn during sessions so future sessions start smarter. This includes corrections, discovered patterns, user preferences, and debugging insights.
When the user corrects you, the correction invalidates stored knowledge. Fix the source immediately:
User: "We don't use Express anymore, we migrated to Fastify"
# WRONG: Just acknowledge and continue
"Got it, I'll use Fastify."
# RIGHT: Update memory, then continue
1. Edit memory/MEMORY.md:
Old: "Framework: Express"
New: "Framework: Fastify (migrated from Express)"
2. Check topic files for stale Express references:
Edit memory/architecture.md if it mentions Express
3. Then continue with correct contextThe correction means the stored memory is wrong. Fix it at the source before continuing, so the same mistake does not repeat.
When you notice yourself repeatedly making the same decision, capture it:
# memory/patterns.md
## Project-Specific Instincts
### Error Handling
- This project always wraps service calls in try/catch at the route level
- Errors are logged with structuredLogger.error(), not console.error()
- All error responses use the AppError class from src/errors.ts
### Naming
- Database functions: findX, createX, updateX, deleteX (not getX, setX)
- Route handlers: handleGetUser, handleCreateUser (not getUser, createUser)
- Test files: same name with .test.ts suffix, same directoryAfter seeing a pattern in 3+ locations, extract it to memory:
# Observation across multiple files:
# - src/routes/users.ts uses Zod schema + validate middleware
# - src/routes/posts.ts uses Zod schema + validate middleware
# - src/routes/comments.ts uses Zod schema + validate middleware
# Extract to memory/patterns.md:
## Input Validation Pattern
All route handlers use Zod schemas for request validation:
1. Schema defined in src/schemas/{resource}.ts
2. validate(schema) middleware applied to route
3. Handler receives typed, validated body via req.validated
Example:
const schema = z.object({ title: z.string().min(1) })
router.post('/', validate(schema), handleCreatePost)Structure knowledge to be useful across sessions:
# memory/debugging.md
## Recurring Issues and Solutions
### "Cannot find module" after adding new file
- Cause: TypeScript path aliases not updated in tsconfig.json
- Fix: Add path to compilerOptions.paths in tsconfig.json
- Also check: jest.config.ts moduleNameMapper if tests fail
### Database connection timeout in tests
- Cause: Test database pool not closed after test suite
- Fix: Add afterAll(() => db.destroy()) in test setup
- File: src/test/setup.ts
### Build fails with "heap out of memory"
- Cause: TypeScript compiling node_modules due to missing exclude
- Fix: Ensure tsconfig.json has "exclude": ["node_modules", "dist"]When a user states a preference, save it immediately:
User: "Always use bun instead of npm"
# Save to memory/MEMORY.md under User Preferences:
## User Preferences
- Package manager: bun (not npm or yarn)
- Always use named exports (no default exports)
- Prefers functional style over classes
- Run tests before committingPreferences are explicit user requests — save them after a single interaction, no need to wait for repetition.
Not all learned information is equally reliable:
# HIGH confidence (save immediately):
- User explicitly states a preference
- Pattern confirmed in 3+ files
- Architectural decision documented in code comments or README
# MEDIUM confidence (save with caveat):
- Pattern seen in 2 files (note: "observed in X and Y, may be broader")
- Behavior inferred from test expectations
# LOW confidence (do NOT save):
- Pattern seen in only 1 file
- Guess about project conventions from naming alone
- Inferred from a single error messageMemory entries have a lifecycle:
Discovery -> Verification -> Recording -> Maintenance -> Retirement
1. Discovery: Notice a pattern or receive a correction
2. Verification: Confirm across multiple sources (unless explicit user request)
3. Recording: Save to appropriate memory file
4. Maintenance: Update when corrections arrive or project evolves
5. Retirement: Remove when no longer applicable (framework migration, etc.)| Trigger | Action | Confidence Required |
|---|---|---|
| User says "remember X" | Save immediately | Explicit request |
| User corrects you | Update source immediately | Correction = verified |
| Pattern in 3+ files | Save as confirmed pattern | High |
| Pattern in 2 files | Save with caveat | Medium |
| Pattern in 1 file | Do not save | Too low |
| Debugging solution | Save if likely to recur | Medium-High |
Corrections are urgent: Fix the memory source before continuing. Preferences are immediate: One explicit request is enough to save. Patterns need evidence: Wait for 3+ occurrences before extracting. Organize by topic: Semantic grouping, never chronological.
~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.