Requirements
- Target platform
- OpenClaw
- Install method
- Manual import
- Extraction
- Extract archive
- Prerequisites
- OpenClaw
- Primary doc
- SKILL.md
Single source of truth for all paths, naming conventions, and data formats across the OpenClaw Greek Accounting system. Reference document.
Single source of truth for all paths, naming conventions, and data formats across the OpenClaw Greek Accounting system. Reference document.
Hand the extracted package to your coding agent with a concrete install brief instead of figuring it out manually.
I downloaded a skill package from Yavira. Read SKILL.md from the extracted folder and install it by following the included instructions. Tell me what you changed and call out any manual steps you could not complete.
I downloaded an updated skill package from Yavira. Read SKILL.md from the extracted folder, compare it with my current installation, and upgrade it while preserving any custom configuration unless the package docs explicitly say otherwise. Summarize what changed and any follow-up checks I should run.
This skill is a reference document โ it defines the directory structure and naming conventions used by all other Greek accounting skills. No binaries or credentials required. # Set the data directory (all skills read this) export OPENCLAW_DATA_DIR="/data" # Initialize the full directory structure mkdir -p $OPENCLAW_DATA_DIR/{incoming/{invoices,receipts,statements,government},processing,clients,compliance/{vat,efka,mydata,e1,e3},banking/{imports/{alpha,nbg,eurobank,piraeus},processing,reconciliation},ocr/{incoming,output},reports,auth,system/{logs,process-locks},backups} This document defines the complete file system architecture for the OpenClaw Greek Accounting system. It is the authoritative reference for all path decisions. No skill may introduce a new top-level directory or deviate from the naming conventions defined here without a version update to this document. v1.1 change: Added /data/memory/ โ agent episodic memory, failure logs, pattern store, GitHub proposal queue, and rate-limit state. Owner: memory-feedback (Skill 19, Phase 4). All Phase 3B+ skills must include episode and failure log hooks that write into this tree.
/data/ โโโ incoming/ # All raw input โ documents arriving into the system โโโ processing/ # Temporary working space โ files mid-pipeline โโโ clients/ # Canonical client records โ the source of truth โโโ compliance/ # Government filings and submissions โโโ banking/ # Bank statement processing pipeline โโโ ocr/ # OCR processing pipeline โโโ efka/ # EFKA/social security processing pipeline โโโ reports/ # Generated reports for human consumption โโโ exports/ # Data exports leaving the system โโโ imports/ # Bulk data imports entering the system โโโ dashboard/ # Dashboard state, config, cache, history โโโ auth/ # Authentication and access control โโโ backups/ # Encrypted system backups โโโ gdpr-exports/ # GDPR subject access request exports โโโ memory/ # Agent episodic memory, failure logs, learning patterns, proposals โโโ system/ # System-level files: logs, schema versions, locks
All documents entering the system land here first, regardless of source (email attachment, manual drop, scanner, bank download). Nothing in /data/incoming/ is processed yet. /data/incoming/ โโโ invoices/ # Supplier invoices (PDF, image) โโโ receipts/ # Receipts (PDF, image, phone photo) โโโ statements/ # Bank statements (PDF, CSV, OFX) โโโ government/ # AADE/EFKA notifications and documents โโโ payroll/ # Hour sheets, employee documents โโโ tax-documents/ # Tax certificates, employer statements (ฮฒฮตฮฒฮฑฮนฯฯฮตฮนฯ) โโโ contracts/ # Contracts and legal documents โโโ other/ # Uncategorised โ routed after classification Naming convention for incoming files: Files dropped here may arrive with any name. The system must NOT rename them on arrival โ the original filename is preserved for audit purposes. The system assigns a canonical name only when moving to /data/processing/.
Temporary working space. Files here are mid-pipeline and may be incomplete. No other skill should read from /data/processing/ as a final source โ always read from /data/clients/ or /data/compliance/ for canonical data. /data/processing/ โโโ ocr/ # OCR in progress โ โโโ queued/ # Waiting for OCR โ โโโ enhanced/ # Image pre-processing complete โ โโโ extracted/ # Text extracted, not yet validated โ โโโ validated/ # OCR output validated, ready to route โโโ classification/ # Document type identification in progress โโโ reconciliation/ # Bank reconciliation working files โ โโโ matching/ # Transaction matching in progress โ โโโ flagged/ # Items needing human review โโโ compliance/ # Filing preparation working files โ โโโ vat/ # VAT return preparation โ โโโ efka/ # EFKA declaration preparation โ โโโ mydata/ # myDATA submission preparation โโโ imports/ # Bulk import validation in progress Cleanup policy: Files in /data/processing/ are deleted or archived after the pipeline completes successfully. They are never the canonical record.
The single source of truth for all client data. Every other skill that needs client information reads from here. Only the client-data-management skill writes to this tree. /data/clients/ โโโ _index.json # Global client index (name, AFM, status, assignee) โโโ _audit-log.json # All access and change events across all clients โโโ _schema-version.json # Current schema version for migration tracking โโโ {AFM}/ # One directory per client, keyed by AFM (e.g. EL123456789) โโโ profile.json # Master client record โโโ identifiers.json # AFM, GEMI, EFKA employer ID, IBANs โโโ contacts.json # Contact persons โโโ notes.json # Relationship notes and meeting logs โโโ compliance/ โ โโโ filings.json # All completed filings (VAT, EFKA, E1, etc.) โ โโโ obligations.json # Recurring obligation schedule โ โโโ gaps.json # Missing/overdue filing log โโโ documents/ โ โโโ registry.json # Metadata index of all documents for this client โ โโโ pending.json # Documents awaiting processing or review โ โโโ archive-index.json # References to archived documents โโโ correspondence/ โ โโโ {YYYYMMDD}_{type}_{draft-id}_sent.json # Immutable sent communication records โโโ comms-preferences.json # Client-specific salutation, contact, language overrides โโโ payroll/ โ โโโ {YYYY-MM}/ # One folder per pay period โ โโโ hours-input.csv # Raw hours data โ โโโ calculations.json # Computed payroll data โ โโโ {employee-slug}_payslip.pdf # Generated payslips โโโ financial-statements/ โ โโโ index.json # All generated statements, versions, periods, status โ โโโ {YYYY-MM}_pl_v{N}.json # P&L machine-readable โ โโโ {YYYY-MM}_balance-sheet_v{N}.json # Balance sheet machine-readable โ โโโ {YYYY-MM}_cash-flow_v{N}.json # Cash flow machine-readable โ โโโ {YYYY-MM}_vat-summary_v{N}.json # VAT summary machine-readable โโโ gdpr/ โโโ consent.json # Consent records โโโ retention-policy.json # Retention schedule for this client โโโ deletion-log.json # Record of any deletions performed AFM format: Always EL + 9 digits, uppercase. Example: EL123456789. Never store without the EL prefix. Never use the 9-digit-only form as a directory name.
Stores the actual submission files (XML, PDF) generated for government platforms. The filing record lives in /data/clients/{AFM}/compliance/filings.json โ this directory holds the file artefacts themselves. /data/compliance/ โโโ vat/ โ โโโ {AFM}_{YYYY}{MM}_vat_return.xml # VAT return XML for TAXIS โโโ mydata/ โ โโโ {AFM}_{YYYY}{MM}_{invoice-number}_mydata.xml โโโ efka/ โ โโโ {AFM}_{YYYY}{MM}_efka_declaration.xml โโโ e1/ โ โโโ {AFM}_{YYYY}_e1_form.xml # Individual tax returns โโโ e3/ โ โโโ {AFM}_{YYYY}_e3_form.xml # Business activity statements โโโ corporate-tax/ โ โโโ {AFM}_{YYYY}_corporate_tax.xml โโโ submissions/ โโโ {AFM}_{YYYY}{MM}_{type}_submission-receipt.json # Government confirmation receipts Naming convention: {AFM}_{period}_{type}.{ext} โ always lowercase type, always ISO period format (YYYYMM or YYYY), always the full AFM with EL prefix.
/data/banking/ โโโ imports/ โ โโโ alpha/ # Alpha Bank raw statement files โ โโโ nbg/ # National Bank of Greece โ โโโ eurobank/ # Eurobank โ โโโ piraeus/ # Piraeus Bank โ โโโ other/ # Other banks โโโ processing/ โ โโโ raw/ # Imported, not yet validated โ โโโ validated/ # Format validation complete โ โโโ categorized/ # Transactions categorised โ โโโ reconciled/ # Reconciliation complete โโโ reconciliation/ โ โโโ {AFM}_{YYYY-MM}_reconciliation.json # Per-client reconciliation reports โโโ exports/ โโโ {AFM}_{YYYY-MM}_transactions.csv # Clean transaction exports Note: /data/alpha-bank/, /data/nbg-statements/, /data/eurobank/, /data/piraeus-bank/ used in earlier skill versions are deprecated. All bank imports go through /data/banking/imports/{bank}/.
/data/ocr/ โโโ incoming/ โ โโโ scanned/ # Flatbed scanner input โ โโโ photos/ # Mobile phone photos of documents โ โโโ government/ # Government-issued documents (AADE letters, etc.) โ โโโ handwritten/ # Handwritten documents requiring special handling โโโ preprocessing/ โ โโโ enhanced/ # Image-enhanced versions awaiting OCR โโโ processing/ โ โโโ greek-ocr/ # Greek language OCR in progress โ โโโ classification/ # Document type being determined โ โโโ validation/ # OCR output being validated โโโ output/ โ โโโ text-extracted/ # Raw text output from OCR โ โโโ structured-data/ # Structured JSON extracted from text โ โโโ searchable-pdf/ # PDFs with embedded text layer โโโ accounting-ready/ # Processed output ready for accounting-workflows skill Note: /data/scanned-documents/ used in earlier skill versions is deprecated. All scanned input goes to /data/ocr/incoming/scanned/.
/data/efka/ โโโ employees/ โ โโโ active/ # Current employee records โ โโโ pending/ # New employees awaiting EFKA registration โ โโโ terminated/ # Terminated employees (retained per legal requirements) โ โโโ imports/ # Bulk employee data imports โ โโโ updates/ # Pending employee record changes โ โโโ validated/ # Imports validated, ready to commit โโโ contributions/ โ โโโ monthly/ # Monthly contribution calculations by period โ โโโ quarterly/ # Quarterly summaries โ โโโ annual/ # Annual totals โ โโโ calculated/ # Computed contributions awaiting validation โ โโโ validated/ # Validated, ready to submit โ โโโ payments/ # Payment confirmation records โโโ payroll/ โ โโโ input/ # Raw hours and salary data โ โโโ validated/ # Validated input โ โโโ processed/ # Calculations complete โ โโโ ready-submit/ # Ready for EFKA portal submission โโโ submissions/ โ โโโ ready/ # Submission files ready to send โ โโโ efka-portal/ # Submitted to EFKA portal (confirmation pending) โ โโโ aade-cross/ # Cross-referenced with AADE for consistency โโโ responses/ โ โโโ confirmations/ # EFKA acceptance receipts โ โโโ corrections/ # EFKA rejection/correction requests โโโ deadlines/ โ โโโ upcoming/ # Deadlines in the next 30 days โ โโโ overdue/ # Missed deadlines requiring urgent action โโโ audit/ โ โโโ employee-records/ # Audit-ready employee documentation โ โโโ contribution-proof/ # Proof of contribution payments โโโ compliance/ โโโ monitoring/ # Ongoing compliance status tracking
Human-readable reports. These are outputs, not inputs to other skills. /data/reports/ โโโ daily/ โ โโโ {YYYY-MM-DD}_daily_summary.pdf โโโ weekly/ โ โโโ {YYYY-WNN}_weekly_report.pdf โโโ monthly/ โ โโโ {YYYY-MM}_monthly_report.pdf โโโ client/ โ โโโ {AFM}_{YYYY-MM}_{report-type}.pdf โโโ compliance/ โ โโโ {AFM}_{YYYY-MM}_compliance_status.pdf โโโ reconciliation/ โ โโโ {AFM}_{YYYY-MM}_reconciliation_report.pdf โโโ financial-statements/ โโโ {AFM}_{YYYY-MM}_financial-pack_v{N}.pdf # Client-facing PDF statement pack Note: /data/reports/monthly-expenses.json (used in Skill 1) is deprecated. Expense data belongs in /data/clients/{AFM}/compliance/ or exported via /data/exports/.
Files generated for external consumption (Excel exports, CSV downloads, accounting software imports). /data/exports/ โโโ clients/ โ โโโ {YYYY-MM-DD}_client_export.{xlsx|csv|json} โโโ transactions/ โ โโโ {AFM}_{YYYY-MM}_transactions.{csv|xlsx} โโโ compliance/ โ โโโ {AFM}_{YYYY}_compliance_summary.xlsx โโโ accounting-software/ โโโ {AFM}_{YYYY-MM}_{target-system}.{qbx|csv|xlsx}
Structured bulk imports (spreadsheets of client lists, employee rosters, etc.) โ not raw documents (those go to /data/incoming/). /data/imports/ โโโ clients/ # Bulk client onboarding files โโโ employees/ # Bulk employee roster imports โโโ historical/ # Historical data migration files
/data/dashboard/ โโโ config/ โ โโโ firm-settings.yaml โ โโโ alert-rules.yaml โ โโโ report-templates.yaml โ โโโ user-preferences/{username}.yaml โโโ state/ โ โโโ client-status.json # Current status snapshot for all clients โ โโโ current-alerts.json # Active alerts โ โโโ deadline-tracker.json # Upcoming deadlines โ โโโ task-queue.json # Pending task list โ โโโ system-health.json # Skill integration health โโโ cache/ โ โโโ aade-latest.json โ โโโ efka-latest.json โ โโโ bank-feeds-latest.json โ โโโ ocr-queue-status.json โโโ reports/ โ โโโ daily/ โ โโโ weekly/ โ โโโ monthly/ โ โโโ client-specific/ โโโ history/ โโโ alerts/ โโโ compliance-scores/ โโโ performance-metrics/
/data/auth/ โโโ users/ โ โโโ {username}/ โ โโโ profile.json โ โโโ credentials.json # Hashed โ never plaintext โ โโโ permissions.json โ โโโ 2fa/ โ โโโ sessions/ โ โโโ {session-id}.json โโโ roles/ โ โโโ senior_accountant.json โ โโโ accountant.json โ โโโ assistant.json โ โโโ viewer.json โ โโโ custom/ โโโ access/ โ โโโ client_assignments.json โ โโโ policies.json โ โโโ ip_whitelist.json โโโ logs/ โโโ logins/ โโโ access/ โโโ admin/ โโโ security/
/data/backups/ โโโ full_{YYYYMMDD}.tar.enc # Full system backup (weekly) โโโ incremental_{YYYYMMDD}.tar.enc # Incremental backup (daily) โโโ clients_{YYYYMMDD}_{HHMMSS}.json.enc # Client snapshot (event-driven) โโโ compliance_{YYYYMMDD}_{HHMMSS}.json.enc # Compliance snapshot (post-submission) โโโ auth_{YYYYMMDD}.json.enc # Auth data backup โโโ restore-test/ # Ephemeral โ restore verification workspace โโโ archives/ # Long-term retention archives (post-active) Naming convention: Always include date and time in backup filename. Always .enc extension for encrypted files. Encryption keys are stored outside /data/ โ never adjacent to backup files.
/data/gdpr-exports/ โโโ {AFM}_gdpr_export_{YYYYMMDD}.json
/data/system/ โโโ skill-versions.json # Installed skill versions and checksums โโโ migration-log.json # Schema migration history โโโ process-locks/ # Concurrency locks (prevent double-processing) โโโ error-log/ โ โโโ {YYYY-MM-DD}_errors.log โโโ migrations/ โ โโโ v{N.N}_{YYYYMMDD}_{description}.json # Schema migration definitions โโโ integrity/ โ โโโ audit-log.json # Permanent integrity event log (all checks and results) โ โโโ hash-registry.json # SHA256 hashes of all canonical data files โ โโโ retention-schedule.json # Active retention schedule configuration โ โโโ last-check-results.json # Most recent integrity check results (dashboard feed) โโโ backups/ โ โโโ backup-manifest.json # Index of all backup files with metadata and verify status โโโ chat-sessions/ โ โโโ {username}/ โ โโโ {YYYY-MM-DD}_{session-id}.json # Conversational assistant session logs โโโ chat-context/ โโโ {username}/ โโโ active-context.json # Active session context (cleared on session end)
The agent's episodic memory, failure capture, pattern learning store, GitHub proposal queue, and rate-limit state. Written to by all skills (episode and failure hooks) and managed by the memory-feedback skill (Skill 19). No skill other than memory-feedback reads from this tree for decision-making โ it is strictly write-on-event, read-by-Skill-19. /data/memory/ โโโ episodes/ โ โโโ {YYYY-MM-DD}/ โ โโโ {session-id}_{action-type}.json # Successful/completed agent actions โโโ failures/ โ โโโ {YYYY-MM-DD}/ โ โโโ {session-id}_{failure-type}.json # Failures with structured reflection โโโ patterns/ โ โโโ successes/ โ โ โโโ {pattern-id}.json # Recurring good outcomes extracted from episodes โ โโโ failures/ โ โโโ {pattern-id}.json # Recurring problems extracted from failures โโโ corrections/ โ โโโ {YYYY-MM-DD}_{correction-id}.json # Human corrections to agent behaviour โโโ proposals/ โ โโโ {YYYY-MM-DD}_{skill-name}_{id}.md # Draft skill improvements awaiting GitHub PR โโโ rate-limits/ โโโ current-state.json # Live token and storage consumption โโโ daily-log.json # Per-day consumption history โโโ config.json # Configurable limits (hard floors enforced) Episode logging trigger: Any agent action that makes a decision, produces output, or interacts with a government system. Trivial reads are not logged. Failure logging trigger: Any error, intent misread, missing data condition, or human correction. Always includes what_should_have_happened field. Pattern scan schedule: Once daily at 02:00 Athens time. Never during business hours. Maximum 3 proposals per day. Maximum 2 GitHub PRs per day. Storage limits (defaults): Episodes: 500 MB max โ auto-archive after 90 days Failures: 200 MB max Patterns: 50 MB max Proposals: 50 MB max Total /data/memory/: 2 GB hard ceiling โ system halts memory writes at 90% capacity GitHub integration: When a failure pattern reaches confidence threshold (โฅ0.85, โฅ3 occurrences), memory-feedback creates a branch on GitHub and opens a pull request against the relevant SKILL.md file. Human must review and merge. Agent never pushes directly to main. Rejected PRs are logged โ the same change is never re-proposed. Rate limit tokens: Memory and reflection operations are budgeted separately from accounting operations. Default: 5,000 tokens/day for all memory processes combined.
IdentifierFormatExampleNotesAFM (VAT)EL + 9 digitsEL123456789Always uppercase EL prefix. Never 9-digit-only.EFKA employer ID8 digits12345678No prefixGEMI9โฌโ12 digits012345678May have leading zeros โ preserve themContact IDC + 3 digitsC001Per-client sequentialFiling ID{type}-{AFM}-{YYYY}-{MM}VAT-EL123456789-2026-01Document IDD + 6 digitsD000123Global sequentialAudit event IDAUD-{YYYYMMDD}-{6digits}AUD-20260218-001234Backup ID{type}_{YYYYMMDD}_{HHMMSS}clients_20260218_143022Episode IDEP-{YYYYMMDD}-{3digits}EP-20260218-001Global sequential per dayFailure IDFAIL-{YYYYMMDD}-{3digits}FAIL-20260218-003Global sequential per dayPattern IDPAT-{YYYYMMDD}-{3digits}PAT-20260218-007Assigned at detectionCorrection IDCOR-{YYYYMMDD}-{3digits}COR-20260218-001Human-assignedSession IDS{YYYYMMDD}-{3digits}S20260218-001Per user session
| Context | Format | Example | Notes | | File names | YYYYMMDD | 20260218 | No separators in filenames | | File names with time | YYYYMMDD_HHMMSS | 20260218_143022 | | | Period references | YYYY-MM | 2026-01 | Monthly periods | | ISO timestamps (JSON) | YYYY-MM-DDTHH:MM:SSZ | 2026-02-18T14:30:00Z | Always UTC in storage | | Display to users | DD/MM/YYYY | 18/02/2026 | Greek date format | | CLI arguments --date | YYYY-MM-DD | 2026-02-18 | ISO for CLI args | | CLI arguments --period | YYYY-MM | 2026-01 | |
| JSON storage | Numeric, 2dp | 12500.00 | Never include โฌ symbol in stored values | | File names | No currency | 12500 | Integer amounts only in filenames | | Display to users | โฌXX,XXX.XX | โฌ12,500.00 | Standard EU format | | CLI output | EUR XX,XXX.XX | EUR 12,500.00 | ASCII-safe for terminal |
Pattern: {AFM}_{YYYY-MM}_{type}_{optional-detail}.{ext} Examples: EL123456789_2026-01_vat_return.xml EL123456789_2026-02_reconciliation_report.pdf EL123456789_2025_e1_form.xml EL123456789_2026-02_payslip_nikos-papadopoulos.pdf Rules: Lowercase type and detail segments Hyphens within segments (not underscores) Underscores between segments No spaces anywhere in file names No Greek characters in file names โ use Latin transliteration for employee names No special characters except hyphens and underscores
Greek names in file names must be transliterated to ASCII lowercase with hyphens: รยฮฏฮบฮฟฯ ฮ ฮฑฯฮฑฮดฯฯฮฟฯ ฮปฮฟฯ โ nikos-papadopoulos ฮฮฑรยฮฏฮฑ ฮฯฮฝฯฯฮฑฮฝฯฮฏฮฝฮฟฯ โ maria-konstantinou ฮฮฎฮผฮทฯรยฮฑ ฮฮฑฮปฮฑฮผฮฑรยฮฌ โ dimitra-kalamara
These paths appear in earlier skill versions and must not be used in any new skill. When encountered in existing commands, treat as aliases that redirect to the canonical paths. DeprecatedCanonical Replacement/data/alpha-bank//data/banking/imports/alpha//data/nbg-statements//data/banking/imports/nbg//data/eurobank//data/banking/imports/eurobank//data/piraeus-bank//data/banking/imports/piraeus//data/bank-imports//data/banking/imports//data/scanned-documents//data/ocr/incoming/scanned//data/email-attachments/data/incoming/ (classified)/data/email-imports//data/incoming//data/invoices/data/incoming/invoices/ (if raw) or /data/clients/{AFM}/documents/ (if processed)/data/processed/invoices//data/clients/{AFM}/documents/ + registry entry/data/processed/receipts//data/clients/{AFM}/documents/ + registry entry/data/processed/E1_2025.pdf/data/compliance/e1/EL{AFM}_2025_e1_form.xml/data/processing/classification/data/processing/classification//data/processing/extraction/data/processing/ocr/extracted//data/processing/validation/data/processing/ocr/validated//data/reports/monthly-expenses.json/data/clients/{AFM}/compliance/ or /data/exports//data/payroll/monthly.xlsx/data/efka/payroll/input/ or /data/clients/{AFM}/payroll//data/export/accounting-software/data/exports/accounting-software//data/aade-downloads//data/incoming/government//data/aade-outputs//data/reports/ or /data/compliance/ (by type)/data/aade-processing//data/processing/compliance//data/compliance-updates//data/incoming/government/
Which skill owns (writes to) each top-level directory: DirectoryOwner SkillOther Skills May Read/data/incoming/accounting-workflowsAll skills/data/processing/Pipeline skill handling the jobNone as final source/data/clients/client-data-managementAll skills (read only)/data/compliance/greek-compliance-aadeaade-api-monitor, efka-api-integration, dashboard/data/banking/greek-banking-integrationaccounting-workflows, dashboard/data/ocr/greek-document-ocraccounting-workflows, greek-email-processor/data/efka/efka-api-integrationgreek-compliance-aade, dashboard/data/reports/dashboard-greek-accountingAll skills (read)/data/reports/analytics/analytics-and-advisory-intelligenceconversational-ai-assistant, dashboard-greek-accounting/data/reports/system/system-integrity-and-backupdashboard-greek-accounting (read)/data/clients/{AFM}/financial-statements/greek-financial-statementsconversational-ai-assistant, client-communication-engine, analytics-and-advisory-intelligence/data/clients/{AFM}/correspondence/client-communication-engineconversational-ai-assistant, analytics-and-advisory-intelligence/data/processing/comms/client-communication-engineEphemeral drafts only โ cleared after send/data/backups/system-integrity-and-backupAll skills trigger event-driven snapshots via meta-skill/data/system/integrity/system-integrity-and-backupAll skills write hash on canonical file write/data/exports/Any skill (with --export)External consumers/data/imports/client-data-managementefka-api-integration/data/dashboard/dashboard-greek-accountinguser-authentication-system/data/auth/user-authentication-systemAll skills (auth check)/data/gdpr-exports/client-data-managementNone/data/system/OpenClaw systemAll skills (read)/data/memory/memory-feedback (Skill 19)All skills write episode/failure hooks; only Skill 19 reads for analysis
Never introduce a new top-level directory under /data/ without updating this document first. Never write processed/canonical data to /data/processing/ โ it is temporary only. Never write client data outside /data/clients/{AFM}/ โ client-data-management is the only writer. Always use the full AFM with EL prefix in all paths, filenames, and JSON keys. Always use ISO date format (YYYY-MM-DD or YYYYMMDD) in file names and JSON โ never DD/MM/YYYY in stored data. Never use Greek characters in file names or directory names โ only in JSON values and display output. Currency values in JSON are always numeric โ never strings with โฌ symbols. All timestamps in JSON are UTC โ display conversion to Europe/Athens happens at the output layer only. The /data/processing/ tree is ephemeral โ never reference it as the source of truth from another skill. Deprecated paths are read-only legacy โ redirect to canonical paths, never create new files at deprecated locations.
Every skill must log significant actions using this single JSON schema. Audit events are written to /data/system/logs/audit/ and are the authoritative record for regulatory inspection. { "event_id": "EVT-20260219-143022-a7b3", "timestamp": "2026-02-19T14:30:22Z", "skill": "greek-compliance-aade", "action": "vat_return_submitted", "category": "government_submission", "user": { "username": "m.papadopoulou", "role": "senior_accountant", "ip_address": "192.168.1.42" }, "client": { "afm": "EL123456789", "name": "ALPHA TRADING AE" }, "details": { "period": "2026-01", "filing_type": "F2_VAT_RETURN", "amount": 3340.00, "submission_ref": "AADE-2026-0142" }, "before_state": null, "after_state": "submitted", "approval": { "prepared_by": "a.nikolaou", "approved_by": "m.papadopoulou", "approved_at": "2026-02-19T14:28:00Z" }, "data_classification": "confidential", "result": "success" } Required fields for all events: event_id, timestamp, skill, action, category, user.username, user.role, result. Optional fields: client, details, before_state, after_state, approval, data_classification. Event categories: government_submission โ any filing sent to AADE, EFKA, myDATA data_modification โ create, update, or delete of client records access_event โ login, logout, session activity, access denial document_processing โ OCR, classification, extraction, validation financial_output โ statement generation, amendment, report creation communication โ client correspondence sent system_operation โ backup, integrity check, schema migration security_event โ lockout, 2FA failure, session revocation, permission change Storage: /data/system/logs/audit/{YYYY-MM-DD}_audit.jsonl (one JSON object per line, append-only). Retention: Audit logs are retained for 10 years per Greek tax law and EU regulatory requirements.
Directories containing sensitive data must be encrypted at rest in production deployments. This is required for GDPR compliance (EU Regulation 2016/679, implemented in Greece by Law 4624/2019).
DirectoryClassificationEncryption RequiredRationale/data/auth/RestrictedMandatoryCredential hashes, session data, 2FA secrets/data/clients/ConfidentialMandatoryFinancial records, PII (names, AFMs, IBANs)/data/compliance/ConfidentialMandatoryTax filings containing financial data/data/efka/ConfidentialMandatoryEmployee PII, salary data, social security numbers/data/banking/ConfidentialRecommendedBank statements, account numbers/data/backups/ConfidentialAlready encryptedAES-256 via Skill 17/data/gdpr-exports/ConfidentialMandatorySubject access request data/data/processing/InternalOptionalEphemeral โ deleted after pipeline/data/reports/InternalRecommendedMay contain client financial summaries/data/system/InternalOptionalLogs and operational data
Encryption_At_Rest: method: "AES-256-GCM" key_management: master_key_source: "Environment variable OPENCLAW_ENCRYPTION_KEY or hardware security module" key_rotation: "Annual, or immediately on suspected compromise" never: "Never store the master key inside /data/ or in any SKILL.md file" options: full_disk: "Preferred โ use LUKS/dm-crypt on the volume hosting /data/" directory_level: "Alternative โ use fscrypt or gocryptfs per directory" file_level: "Minimum โ encrypt individual JSON files with per-file keys derived from master" verification: command: "openclaw integrity verify-encryption --check-all-sensitive-dirs" schedule: "Weekly, as part of system integrity check"
Every JSON record stored in encrypted directories should include a data_classification field: { "data_classification": "confidential" } Valid values: public, internal, confidential, restricted. This field enables rapid scoping during GDPR breach notification (72-hour requirement) โ you can quickly determine what classification of data was exposed.
Every client-facing document generated by the system must include this disclaimer. Skills that produce client-visible output (Skills 15, 16, 18) must append this to their output templates.
ฮคฮฟ ฯฮฑฯฯฮฝ ฮญฮณฮณฯฮฑฯฮฟ ฯฯ ฮฝฯฮฌฯฮธฮทฮบฮต ฮผฮต ฯฮท ฯฯฮฎฯฮท ฮฑฯ ฯฮฟฮผฮฑฯฮฟฯฮฟฮนฮทฮผฮญฮฝฮฟฯ ฮปฮฟฮณฮนฯฮผฮนฮบฮฟฯ ฮปฮฟฮณฮนฯฯฮนฮบฮฎฯ ฯ ฯฮฟฮฒฮฟฮฎฮธฮทฯฮทฯ. ฮฮน ฯฮปฮทฯฮฟฯฮฟฯฮฏฮตฯ ฯฮฟฯ ฯฮตฯฮนฮญฯฮฟฮฝฯฮฑฮน ฮดฮตฮฝ ฮฑฯฮฟฯฮตฮปฮฟฯฮฝ ฮตฯฮฑฮณฮณฮตฮปฮผฮฑฯฮนฮบฮฎ ฮปฮฟฮณฮนฯฯฮนฮบฮฎ ฮฎ ฯฮฟฯฮฟฮปฮฟฮณฮนฮบฮฎ ฯฯ ฮผฮฒฮฟฯ ฮปฮฎ. ฮฃฯ ฮฝฮนฯฯฮฌฯฮฑฮน ฮท ฮตฯฮฑฮฝฮตฮพฮญฯฮฑฯฮท ฮฑฯฯ ฮฑฮดฮตฮนฮฟฮดฮฟฯฮทฮผฮญฮฝฮฟ ฮปฮฟฮณฮนฯฯฮฎ ฯฯฮนฮฝ ฮฑฯฯ ฯฮท ฮปฮฎฯฮท ฮฟฯฮฟฮนฮฑฯฮดฮฎฯฮฟฯฮต ฮฑฯฯฯฮฑฯฮทฯ ฮฒฮฌฯฮตฮน ฮฑฯ ฯฮฟฯ ฯฮฟฯ ฮตฮณฮณฯฮฌฯฮฟฯ .
This document was prepared with the assistance of automated accounting software. The information contained herein does not constitute professional accounting or tax advice. Review by a licensed accountant is recommended before making any decisions based on this document.
Financial statements (Skill 15): Include both Greek and English disclaimers in PDF footer Client correspondence (Skill 16): Include Greek disclaimer in email footer Advisory reports (Skill 18): Include English disclaimer in internal reports, Greek in client-facing Government submissions: Disclaimer is NOT included in filings sent to AADE/EFKA (these are formal submissions, not advisory documents)
All skills must validate incoming data against these rules before processing. Invalid input must be rejected with a clear error message โ never silently accepted.
Validation_Rules: afm: format: "EL followed by exactly 9 digits" regex: "^EL[0-9]{9}$" examples_valid: ["EL123456789", "EL000000001"] examples_invalid: ["123456789", "EL12345", "el123456789", "GR123456789"] iban: format: "GR followed by 25 alphanumeric characters" regex: "^GR[0-9]{25}$" note: "Validate check digits per ISO 13616" ama: description: "EFKA registration number" format: "Numeric, variable length up to 12 digits" regex: "^[0-9]{1,12}$" amka: description: "Social security number" format: "Exactly 11 digits (DDMMYY + 5 sequence digits)" regex: "^[0-9]{11}$"
Financial_Validation: currency_amounts: type: "numeric (float or decimal)" precision: "2 decimal places" never: "Never store as string with euro symbol" range: "0.00 to 999,999,999.99 for normal operations" negative: "Allowed for credit notes and adjustments โ flag if unexpected" vat_rates: valid_values: [0.24, 0.13, 0.06, 0.0] labels: ["24% standard", "13% reduced", "6% super-reduced", "0% exempt"] note: "Reject any other rate โ may indicate data entry error" periods: monthly: "YYYY-MM format, e.g. 2026-01" annual: "YYYY format, e.g. 2025" regex_monthly: "^[0-9]{4}-(0[1-9]|1[0-2])$" regex_annual: "^[0-9]{4}$"
Date_Validation: stored_format: "ISO 8601: YYYY-MM-DD for dates, YYYY-MM-DDTHH:MM:SSZ for timestamps" display_format: "DD/MM/YYYY for Greek client output, YYYY-MM-DD for internal" timezone: "All stored timestamps in UTC. Convert to Europe/Athens only at display layer." never: "Never store DD/MM/YYYY in JSON โ only in display templates" fiscal_year: default: "Calendar year (January 1 โ December 31)" alternative: "Some entities use non-calendar fiscal years โ check client profile"
String_Validation: client_names: charset: "Greek Unicode (U+0370-U+03FF) and Latin characters, spaces, hyphens, periods" max_length: 200 note: "Store in original case โ never force uppercase in storage (uppercase for display only)" file_names: charset: "Latin alphanumeric, hyphens, underscores, periods only" never: "Never use Greek characters, spaces, or special characters in file names" max_length: 255 descriptions: charset: "Any UTF-8" max_length: 2000
Data access, storage, extraction, analysis, reporting, and insight generation.
Largest current source with strong distribution and engagement signals.