{"id":47623808,"url":"https://github.com/cartpauj/mvp-docs","last_synced_at":"2026-05-03T23:11:19.113Z","repository":{"id":346034131,"uuid":"1188317986","full_name":"cartpauj/mvp-docs","owner":"cartpauj","description":"Lightweight Docs Plugin for WordPress (Minimum Viable Product)","archived":false,"fork":false,"pushed_at":"2026-05-02T14:51:44.000Z","size":995,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"develop","last_synced_at":"2026-05-02T16:28:18.350Z","etag":null,"topics":["custom-post-type","docs","documentation","export","import","knowledgebase","lightweight","markdown","minimal","search","wordpress"],"latest_commit_sha":null,"homepage":"","language":"PHP","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/cartpauj.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-03-21T22:58:39.000Z","updated_at":"2026-05-02T14:51:34.000Z","dependencies_parsed_at":"2026-03-22T12:04:26.301Z","dependency_job_id":null,"html_url":"https://github.com/cartpauj/mvp-docs","commit_stats":null,"previous_names":["cartpauj/mvp-docs"],"tags_count":12,"template":false,"template_full_name":null,"purl":"pkg:github/cartpauj/mvp-docs","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cartpauj%2Fmvp-docs","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cartpauj%2Fmvp-docs/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cartpauj%2Fmvp-docs/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cartpauj%2Fmvp-docs/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/cartpauj","download_url":"https://codeload.github.com/cartpauj/mvp-docs/tar.gz/refs/heads/develop","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cartpauj%2Fmvp-docs/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32587855,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-03T22:12:39.696Z","status":"ssl_error","status_checked_at":"2026-05-03T22:09:10.534Z","response_time":103,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["custom-post-type","docs","documentation","export","import","knowledgebase","lightweight","markdown","minimal","search","wordpress"],"created_at":"2026-04-01T22:32:49.792Z","updated_at":"2026-05-03T23:11:19.107Z","avatar_url":"https://github.com/cartpauj.png","language":"PHP","funding_links":[],"categories":[],"sub_categories":[],"readme":"# MVP Docs\n\nA lightweight documentation plugin for WordPress. AI-friendly markdown import, native editor, no bloat.\n\n## Why MVP Docs?\n\nAI tools like Claude and ChatGPT are great at generating documentation in Markdown format. MVP Docs was built to take advantage of that — import AI-generated `.md` files straight into WordPress with a single click. No copy-pasting HTML, no reformatting, no fussing with blocks. Just import and publish.\n\nIt's a lightweight MVP plugin designed to get you up and running with a documentation hub quickly, without the bloat of full-blown knowledge base plugins.\n\n## Features\n\n- **Markdown import** — one-click `.md` to Gutenberg blocks, perfect for AI-generated docs\n- **Full WP-CLI coverage** — configure and populate a docs site from the command line, ideal for shell scripts and AI agents\n- Docs post type with configurable archive at `/docs/`\n- Doc categories with drag-and-drop ordering\n- AJAX search with typeahead dropdown and dedicated results page\n- Import/export docs, categories, and settings as JSON, or as a zip bundle that ships referenced images\n- Configurable colors, layout, slugs, and page titles\n- Block theme and classic theme support\n- Zero scripts or styles outside doc pages\n\n## Requirements\n\n- WordPress 6.7+\n- PHP 8.0+\n\n## Installation\n\n1. Download or clone this repo into `wp-content/plugins/mvp-docs/`\n2. Activate the plugin\n3. Visit **Settings \u003e Permalinks** and click Save\n4. Create docs under the **MVP Docs** menu\n\n## WP-CLI\n\nEvery admin action has a command-line equivalent. You can stand up a complete docs site — settings, categories, docs — without ever opening wp-admin. This makes the plugin a good fit for version-controlled setup scripts, CI pipelines, and AI agent workflows.\n\nRun `wp mvp-docs \u003ccommand\u003e --help` for full option details on any command.\n\n### Commands at a glance\n\n| Command | Purpose |\n|---|---|\n| `wp mvp-docs import-md \u003cfile\u003e` | Import a Markdown file as a doc (byte-identical to the sidebar importer) |\n| `wp mvp-docs import-raw \u003cfile\u003e` | Import a raw HTML file as a doc (block markup preserved if present) |\n| `wp mvp-docs export [--with-images]` | Dump docs, categories, settings, and order to JSON; with `--with-images` produces a zip including referenced media |\n| `wp mvp-docs import \u003cfile\u003e` | Restore a `.json` or `.zip` bundle (auto-detected; sideloads images on zip; dedupes by title, safe to re-run) |\n| `wp mvp-docs reorder-categories \u003crefs\u003e...` | Set category display order (IDs or slugs) |\n| `wp mvp-docs settings list` | Show every setting with description and allowed form |\n| `wp mvp-docs settings get \u003ckey\u003e` | Read a single setting |\n| `wp mvp-docs settings set \u003ck=v\u003e...` | Write settings (auto-flushes rewrites; warns on invalid values) |\n\n### Importing content\n\nBoth `import-md` and `import-raw` accept the same flags:\n\n```\n--title=\u003ctext\u003e         Override the extracted title\n--slug=\u003cslug\u003e          Explicit post slug\n--excerpt=\u003ctext\u003e       Short description shown on category/search pages\n--category=\u003cslug\u003e      Assign to this category (created if missing)\n--sort-order=\u003cn\u003e       In-category sort priority (lower appears first)\n--status=\u003cstatus\u003e      publish | draft | private (default: publish)\n--dry-run              Print generated markup instead of creating a post\n```\n\n**Markdown** — `import-md` runs the file through the same conversion pipeline as the editor sidebar button. The first `# Heading` becomes the post title (unless `--title` is given). Output matches the sidebar importer byte-for-byte, so docs imported from the CLI are indistinguishable from docs imported in the editor.\n\n```bash\nwp mvp-docs import-md ./docs/intro.md --category=getting-started --sort-order=1\n```\n\n**HTML** — `import-raw` writes the file verbatim into `post_content`. If it contains Gutenberg block comments (`\u003c!-- wp:paragraph --\u003e`, etc.) they're preserved. If not, WordPress treats the content as an implicit Classic block in the editor.\n\n```bash\nwp mvp-docs import-raw ./docs/legacy.html --title=\"Legacy Guide\"\n```\n\n### Export and import\n\nBundle everything to JSON:\n\n```bash\nwp mvp-docs export --output=kb-backup.json --pretty\n```\n\nFlags:\n- `--docs` — include docs and categories only\n- `--settings` — include settings and category order only\n- `--output=\u003cfile\u003e` — write to disk (otherwise stdout)\n- `--pretty` — format JSON for readability\n\nRestore:\n\n```bash\nwp mvp-docs import kb-backup.json\n```\n\nDocs are deduplicated by title, so the same bundle can be imported repeatedly without creating duplicates — useful for migrations and staging→prod syncs.\n\n### Settings\n\n`settings list` is self-documenting — it shows every setting with current value, description, and allowed form:\n\n```\n$ wp mvp-docs settings list\nkey                value                description                       allowed\ncolumns            3                    Archive cards per row             1-4\nborder_radius      12                   Card corner radius (pixels)       0-24\ncard_bg            #ffffff              Card background                   hex color (e.g. #ffffff)\nlink_color         #1e40af              Body/link color                   hex color\nsort_by            title                Archive sort field                title | date | modified\nsort_order         asc                  Archive sort direction            asc | desc\ndocs_slug          docs                 URL slug for the docs archive     url-safe slug (triggers rewrite flush)\n...\n```\n\nUse `--format=json` for machine-readable output.\n\n`settings set` accepts multiple `key=value` pairs and reports any values the sanitizer rejected:\n\n```bash\n$ wp mvp-docs settings set columns=7 sort_by=alphabetical\nWarning: columns: \"7\" was not accepted. Allowed: 1-4. Value is now \"3\".\nWarning: sort_by: \"alphabetical\" was not accepted. Allowed: title | date | modified. Value is now \"title\".\nSuccess: Settings saved.\n```\n\nChanging `docs_slug` or `category_slug` auto-flushes rewrite rules — no separate `wp rewrite flush` needed.\n\n### End-to-end recipe\n\nA complete KB setup from a fresh WordPress install:\n\n```bash\nwp plugin activate mvp-docs\n\nwp mvp-docs settings set \\\n  docs_slug=kb \\\n  archive_title=\"Knowledge Base\" \\\n  archive_subtitle=\"Everything you need to get started\" \\\n  columns=3 \\\n  sort_by=title\n\nwp term create mvpd_category \"Getting Started\" --slug=getting-started\nwp term create mvpd_category \"API Reference\"   --slug=api-reference\nwp term create mvpd_category \"Troubleshooting\" --slug=troubleshooting\n\nwp mvp-docs reorder-categories getting-started api-reference troubleshooting\n\nfor f in ./docs/getting-started/*.md; do\n  wp mvp-docs import-md \"$f\" --category=getting-started\ndone\n\nwp mvp-docs export --output=./kb-backup.json\n```\n\n### Combining with core WP-CLI\n\nMVP Docs doesn't reinvent commands that core WP-CLI already provides. Common pairings:\n\n```bash\n# List docs (uses core wp post)\nwp post list --post_type=mvpd_doc\n\n# Update a doc's sort order after import\nwp post meta update 42 mvpd_sort_order 3\n\n# Delete a doc\nwp post delete 42 --force\n\n# Bulk delete all docs\nwp post list --post_type=mvpd_doc --field=ID | xargs -n1 wp post delete --force\n\n# Create/manage categories (uses core wp term)\nwp term create mvpd_category \"Guides\"\nwp term list mvpd_category\nwp term delete mvpd_category 12\n```\n\n## License\n\nGPLv2 or later\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcartpauj%2Fmvp-docs","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcartpauj%2Fmvp-docs","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcartpauj%2Fmvp-docs/lists"}