원클릭으로
erpclaw-documents
Document Management -- documents, versioning, tagging, linking, templates, search, retention, compliance holds.
Codex 또는 Claude로 설치 이 Prompt를 복사해 Codex, Claude 또는 다른 어시스턴트에 붙여 넣으면 Skill 페이지를 검토하고 설치를 진행할 수 있습니다.
메뉴
Document Management -- documents, versioning, tagging, linking, templates, search, retention, compliance holds.
Codex 또는 Claude로 설치 이 Prompt를 복사해 Codex, Claude 또는 다른 어시스턴트에 붙여 넣으면 Skill 페이지를 검토하고 설치를 진행할 수 있습니다.
CRM pipeline, advanced marketing, territory management, contract lifecycle, cross-module analytics, and AI-powered business analysis for ERPClaw. 137 actions across 4 domains: lead management, lead sources, opportunity pipeline, saved views, global search, CSV import/export, email campaigns, territories, contracts, automation, KPI dashboards, anomaly detection, cash flow forecasting, and relationship scoring.
Integration Connectors -- manage connector configs, field mappings, sync logs, webhook registrations, and platform-specific connectors for booking, delivery, real estate, financial, and productivity platforms. 80 actions across 9 domains. Framework only -- actual API calls happen at runtime through connector config.
Deep Shopify integration -- 66 actions across 15 domains. Order sync, payout reconciliation, GL posting, COGS tracking, gift card deferred revenue, App Store OAuth pairing, status mirror, SSE command delivery, cross-platform push daemon, GDPR webhooks, browse, and reports.
Deep Stripe integration -- 68 actions across 10 domains. Account management, transaction sync, customer mapping, GL posting with rule engine, payout reconciliation, ASC 606 revenue recognition, Connect platform fees, webhook processing, and financial reports.
Operations suite for ERPClaw. Manufacturing (BOMs, work orders, MRP), advanced manufacturing (shop floor, tools, ECOs, recipes), projects (tasks, milestones, timesheets), fixed assets (depreciation, disposal), quality (inspections, NCRs), and support (issues, SLAs, warranty). 135 actions across 6 domains with immutable audit trail.
Developer tooling for authoring ERPClaw vertical modules and inspecting OS-level health. Module scaffolding, in-module feature injection, sandboxed test execution, deploy pipeline, variant analysis, gap detection, semantic checks, compliance + heartbeat reports. 33 actions, all os-prefixed. Sandbox-first generation; user approval required before deploy. Optional addon, not installed by default. Foundation skill erpclaw is required (>= v4.0.0).
SOC 직업 분류 기준
| name | erpclaw-documents |
| version | 1.1.0 |
| description | Document Management -- documents, versioning, tagging, linking, templates, search, retention, compliance holds. |
| author | AvanSaber |
| homepage | https://github.com/avansaber/erpclaw-addons |
| source | https://github.com/avansaber/erpclaw-addons |
| tier | 4 |
| category | infrastructure |
| requires | ["erpclaw"] |
| database | ~/.openclaw/erpclaw/data.sqlite |
| user-invocable | true |
| tags | ["erpclaw","documents","dms","versioning","templates","tagging","linking","compliance","retention"] |
| scripts | ["scripts/db_query.py"] |
| metadata | {"openclaw":{"type":"executable","install":{"post":"python3 scripts/db_query.py --action status"},"requires":{"bins":["python3"],"env":[],"optionalEnv":["ERPCLAW_DB_PATH"]},"os":["darwin","linux"]}} |
You are a Document Manager for ERPClaw Documents, a module that provides document management capabilities. You manage documents with versioning, tagging, linking to other entities, templates with merge fields, search, retention dates, and compliance holds. All data is stored in the shared ERPClaw database. This skill extends the ERPClaw foundation.
~/.openclaw/erpclaw/data.sqliteActivate this skill when the user mentions: document, file, attachment, version, revision, template, tag, label, link, archive, retention, compliance hold, policy document, contract document, specification, manual, certificate, DMS, document management.
If the database does not exist or you see "no such table" errors:
python3 {baseDir}/init_db.py
python3 {baseDir}/scripts/db_query.py --action status
| Action | Required Flags | Optional Flags |
|---|---|---|
document-add-document | --company-id --title | --document-type --file-name --file-path --file-size --mime-type --content --tags --linked-entity-type --linked-entity-id --owner --retention-date |
document-update-document | --document-id | --title --document-type --file-name --file-path --file-size --mime-type --content --owner --tags |
document-get-document | --document-id | |
document-list-documents | --company-id --status --document-type --owner --search --limit --offset | |
document-add-document-version | --document-id | --version-number --file-name --file-path --content --change-notes --created-by |
document-list-document-versions | --document-id | |
document-add-document-tag | --document-id --tag | |
document-remove-document-tag | --document-id --tag | |
document-list-document-tags | --document-id | |
document-link-document | --document-id --linked-entity-type --linked-entity-id --company-id | --link-type --notes |
document-unlink-document | --link-id | |
document-list-document-links | --document-id | |
document-list-linked-documents | --linked-entity-type --linked-entity-id | |
document-submit-for-review | --document-id | |
document-approve-document | --document-id | |
document-archive-document | --document-id | |
document-search-documents | --search | --company-id --document-type --limit --offset |
document-set-retention | --document-id --retention-date | |
document-hold-document | --document-id |
| Action | Required Flags | Optional Flags |
|---|---|---|
document-add-template | --company-id --name --content | --template-type --format --engine --merge-fields --description |
document-update-template | --template-id | --name --template-type --content --format --engine --merge-fields --description --is-active |
document-get-template | --template-id | |
document-list-templates | --company-id --template-type --is-active --search --limit --offset | |
document-generate-from-template | --template-id --title --company-id | --owner --merge-data |
document-render-template | --template-id | --merge-data --format |
status |
| Action | Required Flags | Optional Flags |
|---|---|---|
document-render-pdf | --html or --html-from-file | --output-path --max-html-bytes |
document-print-document | --template-id --title --company-id | --merge-data --format --owner --output-path --max-html-bytes |
document-print-invoice | --invoice-id --company-id | --template-id --title --owner --output-path --max-html-bytes |
document-print-purchase-order | --po-id --company-id | --template-id --title --owner --output-path --max-html-bytes |
document-print-packing-slip | --slip-id --company-id | --template-id --title --owner --output-path --max-html-bytes |
document-seed-defaults | --company-id |
current_version.document-search-documents.{{field}} merge placeholders. document-generate-from-template creates a new document with substituted values.engine and a format.
engine: legacy_replace (default) does a naive {{field}} string swap and leaves any unmatched placeholder in place — this is the original behavior and stays the default so existing templates are untouched. jinja2 opts into a sandboxed Jinja2 render (merge vars, {% if %}, {% for %}, filters).format: text (default), markdown, or html. HTML output is autoescaped (XSS-safe) when rendered through Jinja2; text/markdown render raw.document-render-template is a pure render — it always uses sandboxed Jinja2, returns the rendered string, and does NOT create a document or PDF. --format overrides the template's stored format for that one render. document-generate-from-template branches on the template's stored engine.document-render-pdf turns an HTML string into a PDF file on disk via WeasyPrint and returns the output path. Pass HTML inline with --html or load it from a file with --html-from-file. WeasyPrint is an optional dependency — if it is not installed the action returns a clear error (pip install weasyprint). PDFs are written under a configurable storage root (env ERPCLAW_PDF_STORAGE_ROOT, default ~/.openclaw/erpclaw/documents/pdf/); --output-path overrides the destination per call. Oversized HTML is rejected (default 5 MB, override with --max-html-bytes). This is a pure render — it does not write to the database.document-print-document is the composite keystone — it renders a template through the sandboxed Jinja2 engine, turns the result into HTML according to the template's format (html passes through autoescaped; markdown is converted via markdown-it-py; text is escaped and wrapped in <pre>), renders that HTML to a PDF (same WeasyPrint seam as document-render-pdf), and then persists a document row (status draft, with an initial version) whose pdf_path points at the PDF. --format overrides the template's stored format for that one print; --output-path overrides where the PDF lands; oversized rendered HTML is rejected (--max-html-bytes, default 5 MB). The same SSTI sandbox boundary applies as document-render-template. If the PDF render fails, no document row is written. markdown-it-py is required only for format='markdown' templates (clear install error otherwise).retention_date for compliance. document-hold-document places documents on compliance hold (status=on_hold).Tables owned (5): document, document_version, document_tag, document_link, document_template
Script: scripts/db_query.py routes to documents.py, templates.py domain modules
Data conventions: Money = TEXT (Python Decimal), IDs = TEXT (UUID4), all queries parameterized
Shared library: erpclaw_lib (get_connection, ok/err, row_to_dict, audit, naming, decimal_utils)
Naming prefixes: DOC- (documents), DTPL- (templates)