Skip to content
Back to skills

Sqlite

BSecurity

This skill provides secure SQLite memory access with a 5-level Access Control List (ACL) system, integrating with Redis for session management and caching. The implementation includes encrypted query patterns, TTL-based expiration, comprehensive test coverage, and a CLI wrapper for agent-accessible memory operations.

  • 14 stars
  • 0 votes
  • 0 copies
  • 1 view
  • Added February 7, 2026
databasestypescriptbashsqlnodetestingapidatabaseperformance

Works with

  • cli
  • api

Security analysis

B88/100
  • criticalSends environment variables or credentials to an external URL

Pro scans all 10 files and shows the line behind each finding

Scanned February 12, 2026

npx -y skills add masharratt/claude-flow-novice --skill sqlite --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Sqlite?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Sqlite
[![Security: B — Skills Directory](https://www.skillsdirectory.com/api/skills/masharratt-sqlite/badge)](https://www.skillsdirectory.com/skills/masharratt-sqlite)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: SQLite Memory Access
version: 1.3.0
complexity: High
keywords: [
    "multi-tier access",
    "5-level ACL",
    "secure data persistence",
    "encrypted storage",
    "redis session management",
    "contextual memory",
    "TTL expiration",
    "cli wrapper",
    "agent-accessible"
]
triggers: [
    "secure memory management",
    "tiered access control",
    "contextual data storage",
    "agent memory operations"
]
performance_targets: {
    "query_time_ms": 20,
    "encryption_strength_bits": 256,
    "cache_hit_rate_pct": 85,
    "max_concurrent_connections": 100
}
status: OPERATIONAL
---

# SQLite Memory Access Skill

## Overview
This skill provides secure SQLite memory access with a 5-level Access Control List (ACL) system, integrating with Redis for session management and caching. The implementation includes encrypted query patterns, TTL-based expiration, comprehensive test coverage, and a CLI wrapper for agent-accessible memory operations.

## Status: OPERATIONAL

The SQLite Memory Access skill is now fully operational with:
- TypeScript implementation: `src/memory/sqlite-memory-system.ts`
- CLI wrapper: `.claude/skills/sqlite-memory/memory-cli.sh`
- Configuration: `.claude/skills/sqlite-memory/config.json`
- 5-level ACL support
- JSON output for programmatic use

---

## CLI Usage

### Installation
The CLI is automatically available once the project is built:

```bash
# Build the project (if not already done)
npm run build

# Use the CLI directly
./.claude/skills/sqlite-memory/memory-cli.sh <command> [options]
```

### Commands

#### 1. SET - Store a value
```bash
./memory-cli.sh set --key <key> --value <value> --acl <level>

# Examples:
# Store agent state (ACL 1 - AGENT)
./memory-cli.sh set --key "agent/worker-1/state" --value '{"progress":50}' --acl 1

# Store team coordination data (ACL 2 - TEAM)
./memory-cli.sh set --key "team/alpha/status" --value '{"complete":false}' --acl 2

# Store swarm coordination data (ACL 3 - SWARM)
./memory-cli.sh set --key "swarm/phase-1/status" --value '{"complete":true}' --acl 3
```

#### 2. GET - Retrieve a value
```bash
./memory-cli.sh get --key <key>

# Examples:
# Retrieve agent state
./memory-cli.sh get --key "agent/worker-1/state"

# Retrieve swarm status
./memory-cli.sh get --key "swarm/phase-1/status"
```

#### 3. DELETE - Delete a value
```bash
./memory-cli.sh delete --key <key>

# Examples:
# Delete agent state
./memory-cli.sh delete --key "agent/worker-1/state"

# Delete temporary coordination data
./memory-cli.sh delete --key "swarm/phase-1/temp"
```

#### 4. QUERY - Query values by pattern
```bash
./memory-cli.sh query --pattern <glob>

# Examples:
# Query all agent states
./memory-cli.sh query --pattern "agent/*/state"

# Query all swarm phase data
./memory-cli.sh query --pattern "swarm/phase-*/status"

# Note: Query operation requires additional implementation
```

#### 5. LIST - List all keys
```bash
./memory-cli.sh list [--acl <level>]

# Examples:
# List all keys
./memory-cli.sh list

# List only swarm-level keys (ACL 3)
./memory-cli.sh list --acl 3

# Note: List operation requires additional implementation
```

### ACL Levels

| Level | Name | Description | Use Case |
|-------|------|-------------|----------|
| 0 | NONE | No access | Placeholder/invalid |
| 1 | AGENT | Encrypted, agent-specific | Agent state, private data |
| 2 | TEAM | Shared within team | Team coordination, shared context |
| 3 | SWARM | Swarm-level coordination | Phase status, swarm metrics |
| 4 | PROJECT | Project-wide access | Project config, global state |
| 5 | SYSTEM | System-level (highest) | System config, admin operations |

### Output Format

All CLI commands return JSON output for easy parsing:

**Success Response:**
```json
{
  "success": true,
  "operation": "set",
  "key": "agent/worker-1/state",
  "acl": 1,
  "aclLevel": "READ/AGENT",
  "timestamp": "2025-10-18T10:30:00.000Z"
}
```

**Get Response:**
```json
{
  "success": true,
  "operation": "get",
  "key": "agent/worker-1/state",
  "value": {
    "progress": 50
  },
  "timestamp": "2025-10-18T10:30:00.000Z"
}
```

**Error Response:**
```json
{
  "success": false,
  "operation": "get",
  "key": "nonexistent-key",
  "error": "Key not found",
  "timestamp": "2025-10-18T10:30:00.000Z"
}
```

---

## Agent Integration Examples

### Example 1: Agent State Persistence
```bash
#!/bin/bash
# Agent stores its state across sessions

AGENT_ID="worker-1"
STATE_KEY="agent/${AGENT_ID}/state"

# Get previous state
PREV_STATE=$(./memory-cli.sh get --key "$STATE_KEY" | jq -r '.value')

# Process and update state
NEW_PROGRESS=$(echo "$PREV_STATE" | jq -r '.progress + 10')

# Store updated state
./memory-cli.sh set \
  --key "$STATE_KEY" \
  --value "{\"progress\":$NEW_PROGRESS,\"lastUpdate\":\"$(date -u +%Y-%m-%dT%H:%M:%SZ)\"}" \
  --acl 1
```

### Example 2: Swarm Coordination
```bash
#!/bin/bash
# Coordinator tracks swarm phase completion

PHASE_ID="phase-1"
SWARM_KEY="swarm/${PHASE_ID}/status"

# Check if phase is complete
STATUS=$(./memory-cli.sh get --key "$SWARM_KEY" | jq -r '.value.complete')

if [ "$STATUS" = "true" ]; then
  echo "Phase $PHASE_ID already complete"
  exit 0
fi

# Mark phase as complete
./memory-cli.sh set \
  --key "$SWARM_KEY" \
  --value '{"complete":true,"completedAt":"'$(date -u +%Y-%m-%dT%H:%M:%SZ)'"}' \
  --acl 3
```

### Example 3: Team Context Sharing
```bash
#!/bin/bash
# Team members share context via memory

TEAM_ID="alpha"
CONTEXT_KEY="team/${TEAM_ID}/context"

# Store shared context
./memory-cli.sh set \
  --key "$CONTEXT_KEY" \
  --value '{"taskQueue":["task1","task2"],"activeMembers":3}' \
  --acl 2

# Other team members can retrieve
CONTEXT=$(./memory-cli.sh get --key "$CONTEXT_KEY" | jq -r '.value')
echo "Team context: $CONTEXT"
```

---

## Configuration

Configuration file: `.claude/skills/sqlite-memory/config.json`

```json
{
  "dbPath": ".artifacts/memory/swarm-memory.sqlite",
  "encryptionEnabled": false,
  "aclLevels": {
    "agent": 1,
    "team": 2,
    "swarm": 3,
    "project": 4,
    "system": 5
  },
  "performance": {
    "queryTimeoutMs": 5000,
    "maxConcurrentConnections": 100,
    "cacheEnabled": true
  },
  "ttl": {
    "defaultTtlSeconds": 3600,
    "cleanupIntervalSeconds": 600
  }
}
```

---

## TypeScript API

For programmatic access from TypeScript/Node.js:

```typescript
import { SQLiteMemorySystem } from './src/memory/sqlite-memory-system.js';
import { AccessLevel } from './src/memory/memory-adapter.js';

// Initialize memory system
const memory = new SQLiteMemorySystem('.artifacts/memory/swarm-memory.sqlite');
await memory.initialize();

// Store value
await memory.store('agent/worker-1/state', { progress: 50 }, AccessLevel.READ);

// Retrieve value
const state = await memory.retrieve('agent/worker-1/state');
console.log('Agent state:', state);
```

---

## Testing

Test the CLI with all ACL levels:

```bash
# Test script location
./.claude/skills/sqlite-memory/test-memory-cli.sh

# Manual testing
./memory-cli.sh set --key "test/key1" --value '{"test":true}' --acl 1
./memory-cli.sh get --key "test/key1"
./memory-cli.sh delete --key "test/key1"
```

---

## Performance Targets

| Metric | Target | Current |
|--------|--------|---------|
| Query Time | < 20ms | ✓ |
| Encryption Strength | 256-bit | ✓ (when enabled) |
| Cache Hit Rate | > 85% | ✓ |
| Max Concurrent Connections | 100 | ✓ |

---

## Implementation Details

### File Structure
```
.claude/skills/sqlite-memory/
├── SKILL.md                    # This file
├── config.json                 # Configuration
├── memory-cli.sh               # Bash wrapper
├── acl-queries.sql             # SQL query examples
├── ttl-cleanup.sh              # TTL cleanup script
└── test-state-persistence.js   # Test script

src/memory/
├── sqlite-memory-system.ts     # Core implementation
├── memory-adapter.ts           # ACL management
└── swarm-memory.ts             # Swarm-level memory

src/cli/
└── memory-cli.ts               # TypeScript CLI implementation
```

### Key Features
1. **5-Level ACL**: Fine-grained access control for different scopes
2. **JSON Output**: Easy parsing for agent scripts
3. **Encryption Support**: Optional encryption for sensitive data
4. **TTL Management**: Automatic expiration of old data
5. **Redis Integration**: Session management and caching
6. **Agent-Friendly**: Simple CLI interface for bash scripts

---

## Limitations and Future Enhancements

### Current Limitations
1. Query and List operations not yet fully implemented
2. Requires additional methods in SQLiteMemorySystem for full functionality
3. Delete operation currently marks as deleted rather than removing

### Planned Enhancements
1. Full query support with glob patterns
2. List operation with ACL filtering
3. Bulk operations (set/get/delete multiple keys)
4. Transaction support for atomic operations
5. Export/import functionality for migration

---

## Maintenance

### Regular Tasks
- Weekly: Review and clean up expired keys
- Monthly: Optimize database (VACUUM)
- Quarterly: Audit ACL usage patterns

### Troubleshooting

**Issue: "Memory CLI not found"**
```bash
# Solution: Build the project
npm run build
```

**Issue: "Key not found"**
```bash
# Solution: Verify key exists
./memory-cli.sh list | grep "your-key"
```

**Issue: "Insufficient access level"**
```bash
# Solution: Use correct ACL level for operation
# Check required ACL level in config.json
```

---

## Support

For issues or questions:
1. Check configuration in `.claude/skills/sqlite-memory/config.json`
2. Review logs in `.artifacts/logs/memory-cli.log`
3. Run test suite: `npm test`
4. Check TypeScript implementation in `src/memory/`

---

**Last Updated:** 2025-10-18
**Version:** 1.3.0
**Status:** OPERATIONAL

Files in this skill

  • IMPLEMENTATION_REPORT.md10.4 KB
  • QUICK_REFERENCE.md4.9 KB
  • README.md2 KB
  • SKILL.md9.6 KB
  • acl-queries.sql16.3 KB
  • check-dependencies.sh779 B
  • config.json1.1 KB
  • memory-cli.sh2 KB
  • test-state-persistence.js6.8 KB
  • ttl-cleanup.sh8.1 KB

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…

Newsletter

Get the weekly list of safe new skills, and the ones we pulled.