4dpocket 0.1.3__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- 4dpocket-0.1.3/.claude/AGENTS.md +1 -0
- 4dpocket-0.1.3/.claude/CLAUDE.md +65 -0
- 4dpocket-0.1.3/.claude/rules/README.md +41 -0
- 4dpocket-0.1.3/.claude/rules/coding-style.md +74 -0
- 4dpocket-0.1.3/.claude/rules/git-workflow.md +41 -0
- 4dpocket-0.1.3/.claude/rules/karpathy-guidelines.md +59 -0
- 4dpocket-0.1.3/.claude/rules/performance.md +40 -0
- 4dpocket-0.1.3/.claude/rules/security.md +41 -0
- 4dpocket-0.1.3/.claude/rules/testing.md +42 -0
- 4dpocket-0.1.3/.claude/skills/omc-reference/SKILL.md +141 -0
- 4dpocket-0.1.3/.dockerignore +51 -0
- 4dpocket-0.1.3/.env.example +77 -0
- 4dpocket-0.1.3/.github/workflows/ci.yml +127 -0
- 4dpocket-0.1.3/.github/workflows/release.yml +311 -0
- 4dpocket-0.1.3/.gitignore +74 -0
- 4dpocket-0.1.3/AGENTS.md +94 -0
- 4dpocket-0.1.3/CLAUDE.md +84 -0
- 4dpocket-0.1.3/CONTRIBUTING.md +122 -0
- 4dpocket-0.1.3/DEVELOPMENT.md +242 -0
- 4dpocket-0.1.3/Dockerfile +66 -0
- 4dpocket-0.1.3/LICENSE +675 -0
- 4dpocket-0.1.3/Makefile +25 -0
- 4dpocket-0.1.3/PKG-INFO +42 -0
- 4dpocket-0.1.3/PRD.md +1369 -0
- 4dpocket-0.1.3/README.md +495 -0
- 4dpocket-0.1.3/alembic.ini +37 -0
- 4dpocket-0.1.3/docker-compose.simple.yml +23 -0
- 4dpocket-0.1.3/docker-compose.yml +110 -0
- 4dpocket-0.1.3/docker-entrypoint.sh +26 -0
- 4dpocket-0.1.3/extension/.output/chrome-mv3/assets/options-CyTw-_vy.css +1 -0
- 4dpocket-0.1.3/extension/.output/chrome-mv3/assets/popup-BUGXBmrp.css +1 -0
- 4dpocket-0.1.3/extension/.output/chrome-mv3/assets/sidepanel-DZsNxMlg.css +1 -0
- 4dpocket-0.1.3/extension/.output/chrome-mv3/background.js +2 -0
- 4dpocket-0.1.3/extension/.output/chrome-mv3/chunks/auth-C4kx9BHk.js +1 -0
- 4dpocket-0.1.3/extension/.output/chrome-mv3/chunks/items-BcXKT9tZ.js +1 -0
- 4dpocket-0.1.3/extension/.output/chrome-mv3/chunks/options-DF3jaevs.js +1 -0
- 4dpocket-0.1.3/extension/.output/chrome-mv3/chunks/popup-yFNzwLsh.js +1 -0
- 4dpocket-0.1.3/extension/.output/chrome-mv3/chunks/sidepanel-R5bbuIM1.js +1 -0
- 4dpocket-0.1.3/extension/.output/chrome-mv3/content-scripts/content.js +46 -0
- 4dpocket-0.1.3/extension/.output/chrome-mv3/manifest.json +1 -0
- 4dpocket-0.1.3/extension/.output/chrome-mv3/options.html +58 -0
- 4dpocket-0.1.3/extension/.output/chrome-mv3/popup.html +89 -0
- 4dpocket-0.1.3/extension/.output/chrome-mv3/sidepanel.html +50 -0
- 4dpocket-0.1.3/extension/.wxt/tsconfig.json +28 -0
- 4dpocket-0.1.3/extension/.wxt/types/globals.d.ts +15 -0
- 4dpocket-0.1.3/extension/.wxt/types/i18n.d.ts +81 -0
- 4dpocket-0.1.3/extension/.wxt/types/imports.d.ts +22 -0
- 4dpocket-0.1.3/extension/.wxt/types/paths.d.ts +17 -0
- 4dpocket-0.1.3/extension/.wxt/wxt.d.ts +6 -0
- 4dpocket-0.1.3/extension/package.json +19 -0
- 4dpocket-0.1.3/extension/pnpm-lock.yaml +3412 -0
- 4dpocket-0.1.3/extension/src/core/api-client.ts +56 -0
- 4dpocket-0.1.3/extension/src/core/auth.ts +74 -0
- 4dpocket-0.1.3/extension/src/core/constants.ts +6 -0
- 4dpocket-0.1.3/extension/src/core/highlights.ts +36 -0
- 4dpocket-0.1.3/extension/src/core/items.ts +35 -0
- 4dpocket-0.1.3/extension/src/core/types.ts +41 -0
- 4dpocket-0.1.3/extension/src/entrypoints/background.ts +175 -0
- 4dpocket-0.1.3/extension/src/entrypoints/content.ts +242 -0
- 4dpocket-0.1.3/extension/src/entrypoints/options/index.html +57 -0
- 4dpocket-0.1.3/extension/src/entrypoints/options/main.ts +119 -0
- 4dpocket-0.1.3/extension/src/entrypoints/options/style.css +165 -0
- 4dpocket-0.1.3/extension/src/entrypoints/popup/index.html +87 -0
- 4dpocket-0.1.3/extension/src/entrypoints/popup/main.ts +162 -0
- 4dpocket-0.1.3/extension/src/entrypoints/popup/style.css +344 -0
- 4dpocket-0.1.3/extension/src/entrypoints/sidepanel/index.html +48 -0
- 4dpocket-0.1.3/extension/src/entrypoints/sidepanel/main.ts +157 -0
- 4dpocket-0.1.3/extension/src/entrypoints/sidepanel/style.css +218 -0
- 4dpocket-0.1.3/extension/tsconfig.json +3 -0
- 4dpocket-0.1.3/extension/wxt.config.ts +12 -0
- 4dpocket-0.1.3/frontend/.gitignore +24 -0
- 4dpocket-0.1.3/frontend/README.md +73 -0
- 4dpocket-0.1.3/frontend/eslint.config.js +23 -0
- 4dpocket-0.1.3/frontend/index.html +25 -0
- 4dpocket-0.1.3/frontend/package.json +51 -0
- 4dpocket-0.1.3/frontend/pnpm-lock.yaml +4368 -0
- 4dpocket-0.1.3/frontend/public/favicon.svg +1 -0
- 4dpocket-0.1.3/frontend/public/icons/icon-192.png +0 -0
- 4dpocket-0.1.3/frontend/public/icons/icon-512.png +0 -0
- 4dpocket-0.1.3/frontend/public/icons/icon.svg +41 -0
- 4dpocket-0.1.3/frontend/public/icons.svg +24 -0
- 4dpocket-0.1.3/frontend/public/manifest.json +23 -0
- 4dpocket-0.1.3/frontend/public/sw.js +50 -0
- 4dpocket-0.1.3/frontend/src/App.tsx +96 -0
- 4dpocket-0.1.3/frontend/src/api/client.ts +120 -0
- 4dpocket-0.1.3/frontend/src/components/auth/AuthGuard.tsx +30 -0
- 4dpocket-0.1.3/frontend/src/components/bookmark/BookmarkCard.tsx +241 -0
- 4dpocket-0.1.3/frontend/src/components/bookmark/BookmarkForm.tsx +353 -0
- 4dpocket-0.1.3/frontend/src/components/bookmark/NoteCard.tsx +108 -0
- 4dpocket-0.1.3/frontend/src/components/common/CommandPalette.tsx +199 -0
- 4dpocket-0.1.3/frontend/src/components/common/ErrorBoundary.tsx +60 -0
- 4dpocket-0.1.3/frontend/src/components/common/PlatformIcon.tsx +229 -0
- 4dpocket-0.1.3/frontend/src/components/content/ContentRenderer.tsx +188 -0
- 4dpocket-0.1.3/frontend/src/components/content/TextHighlighter.tsx +264 -0
- 4dpocket-0.1.3/frontend/src/components/editor/TiptapEditor.tsx +217 -0
- 4dpocket-0.1.3/frontend/src/components/layout/AppShell.tsx +35 -0
- 4dpocket-0.1.3/frontend/src/components/layout/BottomNav.tsx +48 -0
- 4dpocket-0.1.3/frontend/src/components/layout/Footer.tsx +29 -0
- 4dpocket-0.1.3/frontend/src/components/layout/Header.tsx +54 -0
- 4dpocket-0.1.3/frontend/src/components/layout/Sidebar.tsx +195 -0
- 4dpocket-0.1.3/frontend/src/components/sharing/ShareDialog.tsx +153 -0
- 4dpocket-0.1.3/frontend/src/hooks/use-admin.ts +33 -0
- 4dpocket-0.1.3/frontend/src/hooks/use-auth.ts +68 -0
- 4dpocket-0.1.3/frontend/src/hooks/use-collections.ts +89 -0
- 4dpocket-0.1.3/frontend/src/hooks/use-highlights.ts +20 -0
- 4dpocket-0.1.3/frontend/src/hooks/use-item-links.ts +53 -0
- 4dpocket-0.1.3/frontend/src/hooks/use-items.ts +99 -0
- 4dpocket-0.1.3/frontend/src/hooks/use-keyboard.ts +36 -0
- 4dpocket-0.1.3/frontend/src/hooks/use-notes.ts +133 -0
- 4dpocket-0.1.3/frontend/src/hooks/use-reading-list.ts +67 -0
- 4dpocket-0.1.3/frontend/src/hooks/use-rss.ts +99 -0
- 4dpocket-0.1.3/frontend/src/hooks/use-sharing.ts +35 -0
- 4dpocket-0.1.3/frontend/src/hooks/use-tags.ts +37 -0
- 4dpocket-0.1.3/frontend/src/lib/query-client.ts +11 -0
- 4dpocket-0.1.3/frontend/src/lib/utils.ts +28 -0
- 4dpocket-0.1.3/frontend/src/main.tsx +27 -0
- 4dpocket-0.1.3/frontend/src/pages/AddItem.tsx +97 -0
- 4dpocket-0.1.3/frontend/src/pages/Admin.tsx +527 -0
- 4dpocket-0.1.3/frontend/src/pages/CollectionDetail.tsx +191 -0
- 4dpocket-0.1.3/frontend/src/pages/Collections.tsx +153 -0
- 4dpocket-0.1.3/frontend/src/pages/Dashboard.tsx +180 -0
- 4dpocket-0.1.3/frontend/src/pages/Feed.tsx +539 -0
- 4dpocket-0.1.3/frontend/src/pages/Highlights.tsx +110 -0
- 4dpocket-0.1.3/frontend/src/pages/ItemDetail.tsx +1138 -0
- 4dpocket-0.1.3/frontend/src/pages/KnowledgeBase.tsx +320 -0
- 4dpocket-0.1.3/frontend/src/pages/Login.tsx +146 -0
- 4dpocket-0.1.3/frontend/src/pages/NoteDetail.tsx +339 -0
- 4dpocket-0.1.3/frontend/src/pages/Notes.tsx +396 -0
- 4dpocket-0.1.3/frontend/src/pages/PublicShare.tsx +117 -0
- 4dpocket-0.1.3/frontend/src/pages/ReadingList.tsx +144 -0
- 4dpocket-0.1.3/frontend/src/pages/Register.tsx +194 -0
- 4dpocket-0.1.3/frontend/src/pages/Rules.tsx +151 -0
- 4dpocket-0.1.3/frontend/src/pages/Search.tsx +379 -0
- 4dpocket-0.1.3/frontend/src/pages/Settings.tsx +409 -0
- 4dpocket-0.1.3/frontend/src/pages/SharedWithMe.tsx +140 -0
- 4dpocket-0.1.3/frontend/src/pages/TagDetail.tsx +147 -0
- 4dpocket-0.1.3/frontend/src/pages/Tags.tsx +185 -0
- 4dpocket-0.1.3/frontend/src/pages/Timeline.tsx +104 -0
- 4dpocket-0.1.3/frontend/src/stores/ui-store.ts +56 -0
- 4dpocket-0.1.3/frontend/src/styles/globals.css +171 -0
- 4dpocket-0.1.3/frontend/tsconfig.app.json +32 -0
- 4dpocket-0.1.3/frontend/tsconfig.json +7 -0
- 4dpocket-0.1.3/frontend/tsconfig.node.json +26 -0
- 4dpocket-0.1.3/frontend/vite.config.ts +22 -0
- 4dpocket-0.1.3/pyproject.toml +67 -0
- 4dpocket-0.1.3/src/fourdpocket/__init__.py +8 -0
- 4dpocket-0.1.3/src/fourdpocket/ai/__init__.py +0 -0
- 4dpocket-0.1.3/src/fourdpocket/ai/base.py +39 -0
- 4dpocket-0.1.3/src/fourdpocket/ai/connector.py +136 -0
- 4dpocket-0.1.3/src/fourdpocket/ai/factory.py +105 -0
- 4dpocket-0.1.3/src/fourdpocket/ai/hierarchy.py +102 -0
- 4dpocket-0.1.3/src/fourdpocket/ai/local_embeddings.py +48 -0
- 4dpocket-0.1.3/src/fourdpocket/ai/nvidia_embeddings.py +56 -0
- 4dpocket-0.1.3/src/fourdpocket/ai/openai_compatible.py +190 -0
- 4dpocket-0.1.3/src/fourdpocket/ai/sanitizer.py +78 -0
- 4dpocket-0.1.3/src/fourdpocket/ai/summarizer.py +94 -0
- 4dpocket-0.1.3/src/fourdpocket/ai/tagger.py +255 -0
- 4dpocket-0.1.3/src/fourdpocket/ai/title_generator.py +32 -0
- 4dpocket-0.1.3/src/fourdpocket/api/__init__.py +0 -0
- 4dpocket-0.1.3/src/fourdpocket/api/admin.py +327 -0
- 4dpocket-0.1.3/src/fourdpocket/api/ai.py +317 -0
- 4dpocket-0.1.3/src/fourdpocket/api/auth.py +212 -0
- 4dpocket-0.1.3/src/fourdpocket/api/auth_utils.py +54 -0
- 4dpocket-0.1.3/src/fourdpocket/api/collections.py +494 -0
- 4dpocket-0.1.3/src/fourdpocket/api/comments.py +112 -0
- 4dpocket-0.1.3/src/fourdpocket/api/deps.py +120 -0
- 4dpocket-0.1.3/src/fourdpocket/api/feeds.py +73 -0
- 4dpocket-0.1.3/src/fourdpocket/api/highlights.py +148 -0
- 4dpocket-0.1.3/src/fourdpocket/api/import_export.py +219 -0
- 4dpocket-0.1.3/src/fourdpocket/api/item_links.py +114 -0
- 4dpocket-0.1.3/src/fourdpocket/api/items.py +973 -0
- 4dpocket-0.1.3/src/fourdpocket/api/middleware.py +70 -0
- 4dpocket-0.1.3/src/fourdpocket/api/notes.py +404 -0
- 4dpocket-0.1.3/src/fourdpocket/api/rate_limit.py +143 -0
- 4dpocket-0.1.3/src/fourdpocket/api/router.py +51 -0
- 4dpocket-0.1.3/src/fourdpocket/api/rss.py +253 -0
- 4dpocket-0.1.3/src/fourdpocket/api/rules.py +112 -0
- 4dpocket-0.1.3/src/fourdpocket/api/saved_filters.py +123 -0
- 4dpocket-0.1.3/src/fourdpocket/api/search.py +262 -0
- 4dpocket-0.1.3/src/fourdpocket/api/settings.py +45 -0
- 4dpocket-0.1.3/src/fourdpocket/api/sharing.py +388 -0
- 4dpocket-0.1.3/src/fourdpocket/api/stats.py +91 -0
- 4dpocket-0.1.3/src/fourdpocket/api/tags.py +235 -0
- 4dpocket-0.1.3/src/fourdpocket/config.py +143 -0
- 4dpocket-0.1.3/src/fourdpocket/db/__init__.py +0 -0
- 4dpocket-0.1.3/src/fourdpocket/db/migrations/env.py +45 -0
- 4dpocket-0.1.3/src/fourdpocket/db/migrations/script.py.mako +25 -0
- 4dpocket-0.1.3/src/fourdpocket/db/migrations/versions/375487e8618a_initial_schema.py +30 -0
- 4dpocket-0.1.3/src/fourdpocket/db/session.py +95 -0
- 4dpocket-0.1.3/src/fourdpocket/main.py +114 -0
- 4dpocket-0.1.3/src/fourdpocket/models/__init__.py +52 -0
- 4dpocket-0.1.3/src/fourdpocket/models/base.py +52 -0
- 4dpocket-0.1.3/src/fourdpocket/models/collection.py +78 -0
- 4dpocket-0.1.3/src/fourdpocket/models/collection_note.py +25 -0
- 4dpocket-0.1.3/src/fourdpocket/models/comment.py +26 -0
- 4dpocket-0.1.3/src/fourdpocket/models/embedding.py +21 -0
- 4dpocket-0.1.3/src/fourdpocket/models/feed.py +26 -0
- 4dpocket-0.1.3/src/fourdpocket/models/feed_entry.py +43 -0
- 4dpocket-0.1.3/src/fourdpocket/models/highlight.py +30 -0
- 4dpocket-0.1.3/src/fourdpocket/models/instance_settings.py +20 -0
- 4dpocket-0.1.3/src/fourdpocket/models/item.py +123 -0
- 4dpocket-0.1.3/src/fourdpocket/models/item_link.py +58 -0
- 4dpocket-0.1.3/src/fourdpocket/models/note.py +74 -0
- 4dpocket-0.1.3/src/fourdpocket/models/note_tag.py +13 -0
- 4dpocket-0.1.3/src/fourdpocket/models/rate_limit.py +21 -0
- 4dpocket-0.1.3/src/fourdpocket/models/rss_feed.py +40 -0
- 4dpocket-0.1.3/src/fourdpocket/models/rule.py +28 -0
- 4dpocket-0.1.3/src/fourdpocket/models/saved_filter.py +27 -0
- 4dpocket-0.1.3/src/fourdpocket/models/share.py +60 -0
- 4dpocket-0.1.3/src/fourdpocket/models/tag.py +74 -0
- 4dpocket-0.1.3/src/fourdpocket/models/user.py +95 -0
- 4dpocket-0.1.3/src/fourdpocket/processors/__init__.py +19 -0
- 4dpocket-0.1.3/src/fourdpocket/processors/base.py +170 -0
- 4dpocket-0.1.3/src/fourdpocket/processors/generic_url.py +109 -0
- 4dpocket-0.1.3/src/fourdpocket/processors/github.py +254 -0
- 4dpocket-0.1.3/src/fourdpocket/processors/hackernews.py +108 -0
- 4dpocket-0.1.3/src/fourdpocket/processors/image.py +111 -0
- 4dpocket-0.1.3/src/fourdpocket/processors/instagram.py +165 -0
- 4dpocket-0.1.3/src/fourdpocket/processors/linkedin.py +80 -0
- 4dpocket-0.1.3/src/fourdpocket/processors/mastodon.py +123 -0
- 4dpocket-0.1.3/src/fourdpocket/processors/medium.py +229 -0
- 4dpocket-0.1.3/src/fourdpocket/processors/pdf.py +104 -0
- 4dpocket-0.1.3/src/fourdpocket/processors/pipeline.py +125 -0
- 4dpocket-0.1.3/src/fourdpocket/processors/reddit.py +144 -0
- 4dpocket-0.1.3/src/fourdpocket/processors/registry.py +49 -0
- 4dpocket-0.1.3/src/fourdpocket/processors/spotify.py +82 -0
- 4dpocket-0.1.3/src/fourdpocket/processors/stackoverflow.py +125 -0
- 4dpocket-0.1.3/src/fourdpocket/processors/substack.py +91 -0
- 4dpocket-0.1.3/src/fourdpocket/processors/threads.py +73 -0
- 4dpocket-0.1.3/src/fourdpocket/processors/tiktok.py +95 -0
- 4dpocket-0.1.3/src/fourdpocket/processors/twitter.py +116 -0
- 4dpocket-0.1.3/src/fourdpocket/processors/youtube.py +183 -0
- 4dpocket-0.1.3/src/fourdpocket/search/__init__.py +0 -0
- 4dpocket-0.1.3/src/fourdpocket/search/filters.py +67 -0
- 4dpocket-0.1.3/src/fourdpocket/search/hybrid.py +102 -0
- 4dpocket-0.1.3/src/fourdpocket/search/indexer.py +79 -0
- 4dpocket-0.1.3/src/fourdpocket/search/meilisearch_backend.py +112 -0
- 4dpocket-0.1.3/src/fourdpocket/search/semantic.py +135 -0
- 4dpocket-0.1.3/src/fourdpocket/search/sqlite_fts.py +496 -0
- 4dpocket-0.1.3/src/fourdpocket/sharing/__init__.py +0 -0
- 4dpocket-0.1.3/src/fourdpocket/sharing/feed_manager.py +86 -0
- 4dpocket-0.1.3/src/fourdpocket/sharing/permissions.py +102 -0
- 4dpocket-0.1.3/src/fourdpocket/sharing/share_manager.py +107 -0
- 4dpocket-0.1.3/src/fourdpocket/storage/__init__.py +0 -0
- 4dpocket-0.1.3/src/fourdpocket/storage/local.py +66 -0
- 4dpocket-0.1.3/src/fourdpocket/utils/__init__.py +0 -0
- 4dpocket-0.1.3/src/fourdpocket/utils/ssrf.py +44 -0
- 4dpocket-0.1.3/src/fourdpocket/workers/__init__.py +17 -0
- 4dpocket-0.1.3/src/fourdpocket/workers/ai_enrichment.py +144 -0
- 4dpocket-0.1.3/src/fourdpocket/workers/archiver.py +101 -0
- 4dpocket-0.1.3/src/fourdpocket/workers/fetcher.py +135 -0
- 4dpocket-0.1.3/src/fourdpocket/workers/media_downloader.py +248 -0
- 4dpocket-0.1.3/src/fourdpocket/workers/rss_worker.py +240 -0
- 4dpocket-0.1.3/src/fourdpocket/workers/rule_engine.py +145 -0
- 4dpocket-0.1.3/src/fourdpocket/workers/scheduler.py +59 -0
- 4dpocket-0.1.3/src/fourdpocket/workers/screenshot.py +116 -0
- 4dpocket-0.1.3/tests/__init__.py +0 -0
- 4dpocket-0.1.3/tests/conftest.py +116 -0
- 4dpocket-0.1.3/tests/test_ai/__init__.py +0 -0
- 4dpocket-0.1.3/tests/test_api/__init__.py +0 -0
- 4dpocket-0.1.3/tests/test_api/test_admin_ai.py +72 -0
- 4dpocket-0.1.3/tests/test_api/test_auth.py +149 -0
- 4dpocket-0.1.3/tests/test_api/test_collections.py +208 -0
- 4dpocket-0.1.3/tests/test_api/test_cors.py +49 -0
- 4dpocket-0.1.3/tests/test_api/test_health.py +7 -0
- 4dpocket-0.1.3/tests/test_api/test_items.py +257 -0
- 4dpocket-0.1.3/tests/test_api/test_notes.py +137 -0
- 4dpocket-0.1.3/tests/test_api/test_tags.py +128 -0
- 4dpocket-0.1.3/tests/test_config.py +20 -0
- 4dpocket-0.1.3/tests/test_processors/__init__.py +0 -0
- 4dpocket-0.1.3/tests/test_search/__init__.py +0 -0
- 4dpocket-0.1.3/tests/test_workers/__init__.py +0 -0
- 4dpocket-0.1.3/uv.lock +3397 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
../AGENTS.md
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
<!-- OMC:START -->
|
|
2
|
+
<!-- OMC:VERSION:4.9.3 -->
|
|
3
|
+
|
|
4
|
+
# oh-my-claudecode - Intelligent Multi-Agent Orchestration
|
|
5
|
+
|
|
6
|
+
You are running with oh-my-claudecode (OMC), a multi-agent orchestration layer for Claude Code.
|
|
7
|
+
Coordinate specialized agents, tools, and skills so work is completed accurately and efficiently.
|
|
8
|
+
|
|
9
|
+
<operating_principles>
|
|
10
|
+
- Delegate specialized work to the most appropriate agent.
|
|
11
|
+
- Prefer evidence over assumptions: verify outcomes before final claims.
|
|
12
|
+
- Choose the lightest-weight path that preserves quality.
|
|
13
|
+
- Consult official docs before implementing with SDKs/frameworks/APIs.
|
|
14
|
+
</operating_principles>
|
|
15
|
+
|
|
16
|
+
<delegation_rules>
|
|
17
|
+
Delegate for: multi-file changes, refactors, debugging, reviews, planning, research, verification.
|
|
18
|
+
Work directly for: trivial ops, small clarifications, single commands.
|
|
19
|
+
Route code to `executor` (use `model=opus` for complex work). Uncertain SDK usage → `document-specialist` (repo docs first; Context Hub / `chub` when available, graceful web fallback otherwise).
|
|
20
|
+
</delegation_rules>
|
|
21
|
+
|
|
22
|
+
<model_routing>
|
|
23
|
+
`haiku` (quick lookups), `sonnet` (standard), `opus` (architecture, deep analysis).
|
|
24
|
+
Direct writes OK for: `~/.claude/**`, `.omc/**`, `.claude/**`, `CLAUDE.md`, `AGENTS.md`.
|
|
25
|
+
</model_routing>
|
|
26
|
+
|
|
27
|
+
<skills>
|
|
28
|
+
Invoke via `/oh-my-claudecode:<name>`. Trigger patterns auto-detect keywords.
|
|
29
|
+
Tier-0 workflows include `autopilot`, `ultrawork`, `ralph`, `team`, and `ralplan`.
|
|
30
|
+
Keyword triggers: `"autopilot"→autopilot`, `"ralph"→ralph`, `"ulw"→ultrawork`, `"ccg"→ccg`, `"ralplan"→ralplan`, `"deep interview"→deep-interview`, `"deslop"`/`"anti-slop"`→ai-slop-cleaner, `"deep-analyze"`→analysis mode, `"tdd"`→TDD mode, `"deepsearch"`→codebase search, `"ultrathink"`→deep reasoning, `"cancelomc"`→cancel.
|
|
31
|
+
Team orchestration is explicit via `/team`.
|
|
32
|
+
Detailed agent catalog, tools, team pipeline, commit protocol, and full skills registry live in the native `omc-reference` skill when skills are available, including reference for `explore`, `planner`, `architect`, `executor`, `designer`, and `writer`; this file remains sufficient without skill support.
|
|
33
|
+
</skills>
|
|
34
|
+
|
|
35
|
+
<verification>
|
|
36
|
+
Verify before claiming completion. Size appropriately: small→haiku, standard→sonnet, large/security→opus.
|
|
37
|
+
If verification fails, keep iterating.
|
|
38
|
+
</verification>
|
|
39
|
+
|
|
40
|
+
<execution_protocols>
|
|
41
|
+
Broad requests: explore first, then plan. 2+ independent tasks in parallel. `run_in_background` for builds/tests.
|
|
42
|
+
Keep authoring and review as separate passes: writer pass creates or revises content, reviewer/verifier pass evaluates it later in a separate lane.
|
|
43
|
+
Never self-approve in the same active context; use `code-reviewer` or `verifier` for the approval pass.
|
|
44
|
+
Before concluding: zero pending tasks, tests passing, verifier evidence collected.
|
|
45
|
+
</execution_protocols>
|
|
46
|
+
|
|
47
|
+
<hooks_and_context>
|
|
48
|
+
Hooks inject `<system-reminder>` tags. Key patterns: `hook success: Success` (proceed), `[MAGIC KEYWORD: ...]` (invoke skill), `The boulder never stops` (ralph/ultrawork active).
|
|
49
|
+
Persistence: `<remember>` (7 days), `<remember priority>` (permanent).
|
|
50
|
+
Kill switches: `DISABLE_OMC`, `OMC_SKIP_HOOKS` (comma-separated).
|
|
51
|
+
</hooks_and_context>
|
|
52
|
+
|
|
53
|
+
<cancellation>
|
|
54
|
+
`/oh-my-claudecode:cancel` ends execution modes. Cancel when done+verified or blocked. Don't cancel if work incomplete.
|
|
55
|
+
</cancellation>
|
|
56
|
+
|
|
57
|
+
<worktree_paths>
|
|
58
|
+
State: `.omc/state/`, `.omc/state/sessions/{sessionId}/`, `.omc/notepad.md`, `.omc/project-memory.json`, `.omc/plans/`, `.omc/research/`, `.omc/logs/`
|
|
59
|
+
</worktree_paths>
|
|
60
|
+
|
|
61
|
+
## Setup
|
|
62
|
+
|
|
63
|
+
Say "setup omc" or run `/oh-my-claudecode:omc-setup`.
|
|
64
|
+
|
|
65
|
+
<!-- OMC:END -->
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
# Rules Templates
|
|
2
|
+
|
|
3
|
+
This directory contains rule templates that you can copy to your project's `.claude/rules/` directory.
|
|
4
|
+
|
|
5
|
+
## How to Use
|
|
6
|
+
|
|
7
|
+
1. Create a `.claude/rules/` directory in your project root
|
|
8
|
+
2. Copy the templates you want to use
|
|
9
|
+
3. Customize them for your project
|
|
10
|
+
4. Rules in `.claude/rules/*.md` will be auto-discovered and injected into context
|
|
11
|
+
|
|
12
|
+
## Available Templates
|
|
13
|
+
|
|
14
|
+
| Template | Purpose |
|
|
15
|
+
|----------|---------|
|
|
16
|
+
| `coding-style.md` | Code style and formatting guidelines |
|
|
17
|
+
| `testing.md` | Testing requirements and coverage targets |
|
|
18
|
+
| `security.md` | Security checklist and best practices |
|
|
19
|
+
| `performance.md` | Performance guidelines and model selection |
|
|
20
|
+
| `git-workflow.md` | Git commit and PR workflow |
|
|
21
|
+
| `karpathy-guidelines.md` | Coding discipline — think before coding, simplicity, surgical changes |
|
|
22
|
+
|
|
23
|
+
## Auto-Discovery
|
|
24
|
+
|
|
25
|
+
When you place rules in `.claude/rules/`, they are automatically discovered by oh-my-claudecode and injected into the context for all agents working in your project.
|
|
26
|
+
|
|
27
|
+
## Example
|
|
28
|
+
|
|
29
|
+
```bash
|
|
30
|
+
# Copy templates to your project
|
|
31
|
+
mkdir -p .claude/rules
|
|
32
|
+
cp templates/rules/security.md .claude/rules/
|
|
33
|
+
cp templates/rules/testing.md .claude/rules/
|
|
34
|
+
|
|
35
|
+
# Customize for your project
|
|
36
|
+
# Edit .claude/rules/security.md to add project-specific checks
|
|
37
|
+
```
|
|
38
|
+
|
|
39
|
+
## Customization
|
|
40
|
+
|
|
41
|
+
Each template has `[CUSTOMIZE]` markers where you should add project-specific guidelines.
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
# Coding Style Rules
|
|
2
|
+
|
|
3
|
+
## Immutability (CRITICAL)
|
|
4
|
+
|
|
5
|
+
ALWAYS create new objects, NEVER mutate:
|
|
6
|
+
|
|
7
|
+
```javascript
|
|
8
|
+
// WRONG: Mutation
|
|
9
|
+
function updateUser(user, name) {
|
|
10
|
+
user.name = name // MUTATION!
|
|
11
|
+
return user
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
// CORRECT: Immutability
|
|
15
|
+
function updateUser(user, name) {
|
|
16
|
+
return { ...user, name }
|
|
17
|
+
}
|
|
18
|
+
```
|
|
19
|
+
|
|
20
|
+
## File Organization
|
|
21
|
+
|
|
22
|
+
MANY SMALL FILES > FEW LARGE FILES:
|
|
23
|
+
- High cohesion, low coupling
|
|
24
|
+
- 200-400 lines typical, 800 max
|
|
25
|
+
- Extract utilities from large components
|
|
26
|
+
- Organize by feature/domain, not by type
|
|
27
|
+
|
|
28
|
+
## Error Handling
|
|
29
|
+
|
|
30
|
+
ALWAYS handle errors comprehensively:
|
|
31
|
+
|
|
32
|
+
```typescript
|
|
33
|
+
try {
|
|
34
|
+
const result = await riskyOperation()
|
|
35
|
+
return result
|
|
36
|
+
} catch (error) {
|
|
37
|
+
console.error('Operation failed:', error)
|
|
38
|
+
throw new Error('User-friendly error message')
|
|
39
|
+
}
|
|
40
|
+
```
|
|
41
|
+
|
|
42
|
+
## Input Validation
|
|
43
|
+
|
|
44
|
+
ALWAYS validate user input:
|
|
45
|
+
|
|
46
|
+
```typescript
|
|
47
|
+
import { z } from 'zod'
|
|
48
|
+
|
|
49
|
+
const schema = z.object({
|
|
50
|
+
email: z.string().email(),
|
|
51
|
+
age: z.number().int().min(0).max(150)
|
|
52
|
+
})
|
|
53
|
+
|
|
54
|
+
const validated = schema.parse(input)
|
|
55
|
+
```
|
|
56
|
+
|
|
57
|
+
## Code Quality Checklist
|
|
58
|
+
|
|
59
|
+
Before marking work complete:
|
|
60
|
+
- [ ] Code is readable and well-named
|
|
61
|
+
- [ ] Functions are small (<50 lines)
|
|
62
|
+
- [ ] Files are focused (<800 lines)
|
|
63
|
+
- [ ] No deep nesting (>4 levels)
|
|
64
|
+
- [ ] Proper error handling
|
|
65
|
+
- [ ] No console.log statements
|
|
66
|
+
- [ ] No hardcoded values
|
|
67
|
+
- [ ] Immutable patterns used
|
|
68
|
+
|
|
69
|
+
## [CUSTOMIZE] Project-Specific Style
|
|
70
|
+
|
|
71
|
+
Add your project-specific coding style rules here:
|
|
72
|
+
- Naming conventions
|
|
73
|
+
- File structure requirements
|
|
74
|
+
- Framework-specific patterns
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
# Git Workflow Rules
|
|
2
|
+
|
|
3
|
+
## Commit Message Format
|
|
4
|
+
|
|
5
|
+
```
|
|
6
|
+
<type>: <description>
|
|
7
|
+
|
|
8
|
+
<optional body>
|
|
9
|
+
```
|
|
10
|
+
|
|
11
|
+
Types: feat, fix, refactor, docs, test, chore, perf, ci
|
|
12
|
+
|
|
13
|
+
## Pull Request Workflow
|
|
14
|
+
|
|
15
|
+
When creating PRs:
|
|
16
|
+
1. Analyze full commit history (not just latest commit)
|
|
17
|
+
2. Use `git diff [base-branch]...HEAD` to see all changes
|
|
18
|
+
3. Draft comprehensive PR summary
|
|
19
|
+
4. Include test plan with TODOs
|
|
20
|
+
5. Push with `-u` flag if new branch
|
|
21
|
+
|
|
22
|
+
## Feature Implementation Workflow
|
|
23
|
+
|
|
24
|
+
1. **Plan First** - Use `planner` agent
|
|
25
|
+
2. **TDD Approach** - Use `tdd-guide` agent
|
|
26
|
+
3. **Code Review** - Use `code-reviewer` agent after writing code
|
|
27
|
+
4. **Commit** - Follow conventional commits format
|
|
28
|
+
|
|
29
|
+
## Branch Naming
|
|
30
|
+
|
|
31
|
+
- `feature/` - New features
|
|
32
|
+
- `fix/` - Bug fixes
|
|
33
|
+
- `refactor/` - Code refactoring
|
|
34
|
+
- `docs/` - Documentation changes
|
|
35
|
+
|
|
36
|
+
## [CUSTOMIZE] Project-Specific Git Rules
|
|
37
|
+
|
|
38
|
+
Add your project-specific git workflow here:
|
|
39
|
+
- Branch protection rules
|
|
40
|
+
- Required reviewers
|
|
41
|
+
- CI/CD requirements
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
# Karpathy Coding Guidelines
|
|
2
|
+
|
|
3
|
+
Behavioral guidelines to reduce common LLM coding mistakes, derived from Andrej Karpathy's observations on LLM coding pitfalls. These principles bias toward caution over speed — for trivial tasks, use judgment.
|
|
4
|
+
|
|
5
|
+
## 1. Think Before Coding
|
|
6
|
+
|
|
7
|
+
**Don't assume. Don't hide confusion. Surface tradeoffs.**
|
|
8
|
+
|
|
9
|
+
Before implementing:
|
|
10
|
+
- State your assumptions explicitly. If uncertain, ask.
|
|
11
|
+
- If multiple interpretations exist, present them — don't pick silently.
|
|
12
|
+
- If a simpler approach exists, say so. Push back when warranted.
|
|
13
|
+
- If something is unclear, stop. Name what's confusing. Ask.
|
|
14
|
+
|
|
15
|
+
## 2. Simplicity First
|
|
16
|
+
|
|
17
|
+
**Minimum code that solves the problem. Nothing speculative.**
|
|
18
|
+
|
|
19
|
+
- No features beyond what was asked.
|
|
20
|
+
- No abstractions for single-use code.
|
|
21
|
+
- No "flexibility" or "configurability" that wasn't requested.
|
|
22
|
+
- No error handling for impossible scenarios.
|
|
23
|
+
- If you write 200 lines and it could be 50, rewrite it.
|
|
24
|
+
|
|
25
|
+
Ask yourself: "Would a senior engineer say this is overcomplicated?" If yes, simplify.
|
|
26
|
+
|
|
27
|
+
## 3. Surgical Changes
|
|
28
|
+
|
|
29
|
+
**Touch only what you must. Clean up only your own mess.**
|
|
30
|
+
|
|
31
|
+
When editing existing code:
|
|
32
|
+
- Don't "improve" adjacent code, comments, or formatting.
|
|
33
|
+
- Don't refactor things that aren't broken.
|
|
34
|
+
- Match existing style, even if you'd do it differently.
|
|
35
|
+
- If you notice unrelated dead code, mention it — don't delete it.
|
|
36
|
+
|
|
37
|
+
When your changes create orphans:
|
|
38
|
+
- Remove imports/variables/functions that YOUR changes made unused.
|
|
39
|
+
- Don't remove pre-existing dead code unless asked.
|
|
40
|
+
|
|
41
|
+
The test: Every changed line should trace directly to the user's request.
|
|
42
|
+
|
|
43
|
+
## 4. Goal-Driven Execution
|
|
44
|
+
|
|
45
|
+
**Define success criteria. Loop until verified.**
|
|
46
|
+
|
|
47
|
+
Transform tasks into verifiable goals:
|
|
48
|
+
- "Add validation" → "Write tests for invalid inputs, then make them pass"
|
|
49
|
+
- "Fix the bug" → "Write a test that reproduces it, then make it pass"
|
|
50
|
+
- "Refactor X" → "Ensure tests pass before and after"
|
|
51
|
+
|
|
52
|
+
For multi-step tasks, state a brief plan:
|
|
53
|
+
```
|
|
54
|
+
1. [Step] → verify: [check]
|
|
55
|
+
2. [Step] → verify: [check]
|
|
56
|
+
3. [Step] → verify: [check]
|
|
57
|
+
```
|
|
58
|
+
|
|
59
|
+
Strong success criteria let you loop independently. Weak criteria ("make it work") require constant clarification.
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
# Performance Rules
|
|
2
|
+
|
|
3
|
+
## Model Selection Strategy
|
|
4
|
+
|
|
5
|
+
**Haiku** (90% of Sonnet capability, 3x cost savings):
|
|
6
|
+
- Lightweight agents with frequent invocation
|
|
7
|
+
- Code generation and exploration
|
|
8
|
+
- Worker agents in multi-agent systems
|
|
9
|
+
|
|
10
|
+
**Sonnet** (Best coding model):
|
|
11
|
+
- Main development work
|
|
12
|
+
- Orchestrating multi-agent workflows
|
|
13
|
+
- Complex coding tasks
|
|
14
|
+
|
|
15
|
+
**Opus** (Deepest reasoning):
|
|
16
|
+
- Complex architectural decisions
|
|
17
|
+
- Maximum reasoning requirements
|
|
18
|
+
- Research and analysis tasks
|
|
19
|
+
|
|
20
|
+
## Context Window Management
|
|
21
|
+
|
|
22
|
+
Avoid last 20% of context window for:
|
|
23
|
+
- Large-scale refactoring
|
|
24
|
+
- Feature implementation spanning multiple files
|
|
25
|
+
- Debugging complex interactions
|
|
26
|
+
|
|
27
|
+
## Algorithm Efficiency
|
|
28
|
+
|
|
29
|
+
Before implementing:
|
|
30
|
+
- [ ] Consider time complexity
|
|
31
|
+
- [ ] Avoid O(n^2) when O(n log n) possible
|
|
32
|
+
- [ ] Use appropriate data structures
|
|
33
|
+
- [ ] Cache expensive computations
|
|
34
|
+
|
|
35
|
+
## [CUSTOMIZE] Project-Specific Performance
|
|
36
|
+
|
|
37
|
+
Add your project-specific performance requirements here:
|
|
38
|
+
- Response time targets
|
|
39
|
+
- Bundle size limits
|
|
40
|
+
- Database query limits
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
# Security Rules
|
|
2
|
+
|
|
3
|
+
## Mandatory Security Checks
|
|
4
|
+
|
|
5
|
+
Before ANY commit:
|
|
6
|
+
- [ ] No hardcoded secrets (API keys, passwords, tokens)
|
|
7
|
+
- [ ] All user inputs validated
|
|
8
|
+
- [ ] SQL injection prevention (parameterized queries)
|
|
9
|
+
- [ ] XSS prevention (sanitized HTML)
|
|
10
|
+
- [ ] CSRF protection enabled
|
|
11
|
+
- [ ] Authentication/authorization verified
|
|
12
|
+
- [ ] Rate limiting on all endpoints
|
|
13
|
+
- [ ] Error messages don't leak sensitive data
|
|
14
|
+
|
|
15
|
+
## Secret Management
|
|
16
|
+
|
|
17
|
+
```typescript
|
|
18
|
+
// NEVER: Hardcoded secrets
|
|
19
|
+
const apiKey = "sk-proj-xxxxx"
|
|
20
|
+
|
|
21
|
+
// ALWAYS: Environment variables
|
|
22
|
+
const apiKey = process.env.API_KEY
|
|
23
|
+
if (!apiKey) throw new Error('API_KEY not configured')
|
|
24
|
+
```
|
|
25
|
+
|
|
26
|
+
## Security Response Protocol
|
|
27
|
+
|
|
28
|
+
If security issue found:
|
|
29
|
+
1. STOP immediately
|
|
30
|
+
2. Use `security-reviewer` agent
|
|
31
|
+
3. Fix CRITICAL issues before continuing
|
|
32
|
+
4. Rotate any exposed secrets
|
|
33
|
+
5. Review entire codebase for similar issues
|
|
34
|
+
|
|
35
|
+
## [CUSTOMIZE] Project-Specific Security
|
|
36
|
+
|
|
37
|
+
Add your project-specific security requirements here:
|
|
38
|
+
- Authentication method
|
|
39
|
+
- Authorization rules
|
|
40
|
+
- Data encryption requirements
|
|
41
|
+
- Compliance requirements (GDPR, HIPAA, etc.)
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
# Testing Rules
|
|
2
|
+
|
|
3
|
+
## Minimum Test Coverage: 80%
|
|
4
|
+
|
|
5
|
+
Test Types (ALL required):
|
|
6
|
+
1. **Unit Tests** - Individual functions, utilities, components
|
|
7
|
+
2. **Integration Tests** - API endpoints, database operations
|
|
8
|
+
3. **E2E Tests** - Critical user flows
|
|
9
|
+
|
|
10
|
+
## Test-Driven Development
|
|
11
|
+
|
|
12
|
+
MANDATORY workflow:
|
|
13
|
+
1. Write test first (RED)
|
|
14
|
+
2. Run test - it should FAIL
|
|
15
|
+
3. Write minimal implementation (GREEN)
|
|
16
|
+
4. Run test - it should PASS
|
|
17
|
+
5. Refactor (IMPROVE)
|
|
18
|
+
6. Verify coverage (80%+)
|
|
19
|
+
|
|
20
|
+
## Edge Cases to Test
|
|
21
|
+
|
|
22
|
+
Every function must be tested with:
|
|
23
|
+
- [ ] Null/undefined inputs
|
|
24
|
+
- [ ] Empty arrays/strings
|
|
25
|
+
- [ ] Invalid types
|
|
26
|
+
- [ ] Boundary values (min/max)
|
|
27
|
+
- [ ] Error conditions
|
|
28
|
+
|
|
29
|
+
## Test Quality Checklist
|
|
30
|
+
|
|
31
|
+
- [ ] Tests are independent (no shared state)
|
|
32
|
+
- [ ] Test names describe behavior
|
|
33
|
+
- [ ] Mocks used for external dependencies
|
|
34
|
+
- [ ] Both happy path and error paths tested
|
|
35
|
+
- [ ] No flaky tests
|
|
36
|
+
|
|
37
|
+
## [CUSTOMIZE] Project-Specific Testing
|
|
38
|
+
|
|
39
|
+
Add your project-specific testing requirements here:
|
|
40
|
+
- Test framework configuration
|
|
41
|
+
- Mock setup patterns
|
|
42
|
+
- E2E test scenarios
|
|
@@ -0,0 +1,141 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: omc-reference
|
|
3
|
+
description: OMC agent catalog, available tools, team pipeline routing, commit protocol, and skills registry. Auto-loads when delegating to agents, using OMC tools, orchestrating teams, making commits, or invoking skills.
|
|
4
|
+
user-invocable: false
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# OMC Reference
|
|
8
|
+
|
|
9
|
+
Use this built-in reference when you need detailed OMC catalog information that does not need to live in every `CLAUDE.md` session.
|
|
10
|
+
|
|
11
|
+
## Agent Catalog
|
|
12
|
+
|
|
13
|
+
Prefix: `oh-my-claudecode:`. See `agents/*.md` for full prompts.
|
|
14
|
+
|
|
15
|
+
- `explore` (haiku) — fast codebase search and mapping
|
|
16
|
+
- `analyst` (opus) — requirements clarity and hidden constraints
|
|
17
|
+
- `planner` (opus) — sequencing and execution plans
|
|
18
|
+
- `architect` (opus) — system design, boundaries, and long-horizon tradeoffs
|
|
19
|
+
- `debugger` (sonnet) — root-cause analysis and failure diagnosis
|
|
20
|
+
- `executor` (sonnet) — implementation and refactoring
|
|
21
|
+
- `verifier` (sonnet) — completion evidence and validation
|
|
22
|
+
- `tracer` (sonnet) — trace gathering and evidence capture
|
|
23
|
+
- `security-reviewer` (sonnet) — trust boundaries and vulnerabilities
|
|
24
|
+
- `code-reviewer` (opus) — comprehensive code review
|
|
25
|
+
- `test-engineer` (sonnet) — testing strategy and regression coverage
|
|
26
|
+
- `designer` (sonnet) — UX and interaction design
|
|
27
|
+
- `writer` (haiku) — documentation and concise content work
|
|
28
|
+
- `qa-tester` (sonnet) — runtime/manual validation
|
|
29
|
+
- `scientist` (sonnet) — data analysis and statistical reasoning
|
|
30
|
+
- `document-specialist` (sonnet) — SDK/API/framework documentation lookup
|
|
31
|
+
- `git-master` (sonnet) — commit strategy and history hygiene
|
|
32
|
+
- `code-simplifier` (opus) — behavior-preserving simplification
|
|
33
|
+
- `critic` (opus) — plan/design challenge and review
|
|
34
|
+
|
|
35
|
+
## Model Routing
|
|
36
|
+
|
|
37
|
+
- `haiku` — quick lookups, lightweight inspection, narrow docs work
|
|
38
|
+
- `sonnet` — standard implementation, debugging, and review
|
|
39
|
+
- `opus` — architecture, deep analysis, consensus planning, and high-risk review
|
|
40
|
+
|
|
41
|
+
## Tools Reference
|
|
42
|
+
|
|
43
|
+
### External AI / orchestration
|
|
44
|
+
- `/team N:executor "task"`
|
|
45
|
+
- `omc team N:codex|gemini "..."`
|
|
46
|
+
- `omc ask <claude|codex|gemini>`
|
|
47
|
+
- `/ccg`
|
|
48
|
+
|
|
49
|
+
### OMC state
|
|
50
|
+
- `state_read`, `state_write`, `state_clear`, `state_list_active`, `state_get_status`
|
|
51
|
+
|
|
52
|
+
### Team runtime
|
|
53
|
+
- `TeamCreate`, `TeamDelete`, `SendMessage`, `TaskCreate`, `TaskList`, `TaskGet`, `TaskUpdate`
|
|
54
|
+
|
|
55
|
+
### Notepad
|
|
56
|
+
- `notepad_read`, `notepad_write_priority`, `notepad_write_working`, `notepad_write_manual`
|
|
57
|
+
|
|
58
|
+
### Project memory
|
|
59
|
+
- `project_memory_read`, `project_memory_write`, `project_memory_add_note`, `project_memory_add_directive`
|
|
60
|
+
|
|
61
|
+
### Code intelligence
|
|
62
|
+
- LSP: `lsp_hover`, `lsp_goto_definition`, `lsp_find_references`, `lsp_diagnostics`, and related helpers
|
|
63
|
+
- AST: `ast_grep_search`, `ast_grep_replace`
|
|
64
|
+
- Utility: `python_repl`
|
|
65
|
+
|
|
66
|
+
## Skills Registry
|
|
67
|
+
|
|
68
|
+
Invoke built-in workflows via `/oh-my-claudecode:<name>`.
|
|
69
|
+
|
|
70
|
+
### Workflow skills
|
|
71
|
+
- `autopilot` — full autonomous execution from idea to working code
|
|
72
|
+
- `ralph` — persistence loop until completion with verification
|
|
73
|
+
- `ultrawork` — high-throughput parallel execution
|
|
74
|
+
- `visual-verdict` — structured visual QA verdicts
|
|
75
|
+
- `team` — coordinated team orchestration
|
|
76
|
+
- `ccg` — Codex + Gemini + Claude synthesis lane
|
|
77
|
+
- `ultraqa` — QA cycle: test, verify, fix, repeat
|
|
78
|
+
- `omc-plan` — planning workflow and `/plan`-safe alias
|
|
79
|
+
- `ralplan` — consensus planning workflow
|
|
80
|
+
- `sciomc` — science/research workflow
|
|
81
|
+
- `external-context` — external docs/research workflow
|
|
82
|
+
- `deepinit` — hierarchical AGENTS.md generation
|
|
83
|
+
- `deep-interview` — Socratic ambiguity-gated requirements workflow
|
|
84
|
+
- `ai-slop-cleaner` — regression-safe cleanup workflow
|
|
85
|
+
|
|
86
|
+
### Utility skills
|
|
87
|
+
- `ask`, `cancel`, `note`, `learner`, `omc-setup`, `mcp-setup`, `hud`, `omc-doctor`, `trace`, `release`, `project-session-manager`, `skill`, `writer-memory`, `configure-notifications`
|
|
88
|
+
|
|
89
|
+
### Keyword triggers kept compact in CLAUDE.md
|
|
90
|
+
- `"autopilot"→autopilot`
|
|
91
|
+
- `"ralph"→ralph`
|
|
92
|
+
- `"ulw"→ultrawork`
|
|
93
|
+
- `"ccg"→ccg`
|
|
94
|
+
- `"ralplan"→ralplan`
|
|
95
|
+
- `"deep interview"→deep-interview`
|
|
96
|
+
- `"deslop" / "anti-slop"→ai-slop-cleaner`
|
|
97
|
+
- `"deep-analyze"→analysis mode`
|
|
98
|
+
- `"tdd"→TDD mode`
|
|
99
|
+
- `"deepsearch"→codebase search`
|
|
100
|
+
- `"ultrathink"→deep reasoning`
|
|
101
|
+
- `"cancelomc"→cancel`
|
|
102
|
+
- Team orchestration is explicit via `/team`.
|
|
103
|
+
|
|
104
|
+
## Team Pipeline
|
|
105
|
+
|
|
106
|
+
Stages: `team-plan` → `team-prd` → `team-exec` → `team-verify` → `team-fix` (loop).
|
|
107
|
+
|
|
108
|
+
- Use `team-fix` for bounded remediation loops.
|
|
109
|
+
- `team ralph` links the team pipeline with Ralph-style sequential verification.
|
|
110
|
+
- Prefer team mode when independent parallel lanes justify the coordination overhead.
|
|
111
|
+
|
|
112
|
+
## Commit Protocol
|
|
113
|
+
|
|
114
|
+
Use git trailers to preserve decision context in every commit message.
|
|
115
|
+
|
|
116
|
+
### Format
|
|
117
|
+
- Intent line first: why the change was made
|
|
118
|
+
- Optional body with context and rationale
|
|
119
|
+
- Structured trailers when applicable
|
|
120
|
+
|
|
121
|
+
### Common trailers
|
|
122
|
+
- `Constraint:` active constraint shaping the decision
|
|
123
|
+
- `Rejected:` alternative considered | reason for rejection
|
|
124
|
+
- `Directive:` forward-looking warning or instruction
|
|
125
|
+
- `Confidence:` `high` | `medium` | `low`
|
|
126
|
+
- `Scope-risk:` `narrow` | `moderate` | `broad`
|
|
127
|
+
- `Not-tested:` known verification gap
|
|
128
|
+
|
|
129
|
+
### Example
|
|
130
|
+
```text
|
|
131
|
+
feat(docs): reduce always-loaded OMC instruction footprint
|
|
132
|
+
|
|
133
|
+
Move reference-only orchestration content into a native Claude skill so
|
|
134
|
+
session-start guidance stays small while detailed OMC reference remains available.
|
|
135
|
+
|
|
136
|
+
Constraint: Preserve CLAUDE.md marker-based installation flow
|
|
137
|
+
Rejected: Sync all built-in skills in legacy install | broader behavior change than issue requires
|
|
138
|
+
Confidence: high
|
|
139
|
+
Scope-risk: narrow
|
|
140
|
+
Not-tested: End-to-end plugin marketplace install in a fresh Claude profile
|
|
141
|
+
```
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
# Git
|
|
2
|
+
.git
|
|
3
|
+
.gitignore
|
|
4
|
+
|
|
5
|
+
# Python
|
|
6
|
+
__pycache__
|
|
7
|
+
*.pyc
|
|
8
|
+
*.pyo
|
|
9
|
+
.mypy_cache
|
|
10
|
+
.pytest_cache
|
|
11
|
+
.ruff_cache
|
|
12
|
+
*.egg-info
|
|
13
|
+
dist/
|
|
14
|
+
build/
|
|
15
|
+
|
|
16
|
+
# Frontend (built in Docker)
|
|
17
|
+
frontend/node_modules
|
|
18
|
+
frontend/dist
|
|
19
|
+
frontend/.omc
|
|
20
|
+
|
|
21
|
+
# Dev/IDE
|
|
22
|
+
.venv
|
|
23
|
+
.env
|
|
24
|
+
.env.local
|
|
25
|
+
*.swp
|
|
26
|
+
*.swo
|
|
27
|
+
.vscode
|
|
28
|
+
.idea
|
|
29
|
+
.DS_Store
|
|
30
|
+
|
|
31
|
+
# OMC / Claude
|
|
32
|
+
.omc
|
|
33
|
+
.claude
|
|
34
|
+
.playwright-mcp
|
|
35
|
+
missions
|
|
36
|
+
|
|
37
|
+
# Data
|
|
38
|
+
data/
|
|
39
|
+
*.db
|
|
40
|
+
*.db-wal
|
|
41
|
+
*.db-shm
|
|
42
|
+
|
|
43
|
+
# Tests
|
|
44
|
+
tests/
|
|
45
|
+
htmlcov/
|
|
46
|
+
.coverage
|
|
47
|
+
|
|
48
|
+
# Docs
|
|
49
|
+
*.md
|
|
50
|
+
!pyproject.toml
|
|
51
|
+
LICENSE
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
# 4DPocket Configuration
|
|
2
|
+
# Copy this to .env and fill in your values
|
|
3
|
+
# WARNING: Never commit .env to git - it contains secrets
|
|
4
|
+
|
|
5
|
+
# ─── Database ────────────────────────────────────────────────────
|
|
6
|
+
# SQLite (default, zero-config)
|
|
7
|
+
FDP_DATABASE__URL=sqlite:///./data/4dpocket.db
|
|
8
|
+
# PostgreSQL (production/Docker)
|
|
9
|
+
# FDP_DATABASE__URL=postgresql://4dp:4dp@localhost:5432/4dpocket
|
|
10
|
+
|
|
11
|
+
# ─── Authentication ──────────────────────────────────────────────
|
|
12
|
+
FDP_AUTH__MODE=single # "single" (no login) or "multi" (JWT auth)
|
|
13
|
+
# FDP_AUTH__SECRET_KEY= # auto-generated and persisted if not set
|
|
14
|
+
# FDP_AUTH__TOKEN_EXPIRE_MINUTES=10080 # 7 days
|
|
15
|
+
|
|
16
|
+
# ─── Search ──────────────────────────────────────────────────────
|
|
17
|
+
FDP_SEARCH__BACKEND=sqlite # "sqlite" (FTS5) or "meilisearch"
|
|
18
|
+
# FDP_SEARCH__MEILI_URL=http://localhost:7700
|
|
19
|
+
# FDP_SEARCH__MEILI_MASTER_KEY=masterkey123
|
|
20
|
+
|
|
21
|
+
# ─── AI Chat Provider ───────────────────────────────────────────
|
|
22
|
+
# Supported: "ollama" (local), "groq" (cloud), "nvidia" (cloud), "custom" (any OpenAI-compatible)
|
|
23
|
+
FDP_AI__CHAT_PROVIDER=ollama
|
|
24
|
+
|
|
25
|
+
# Ollama (default - local, free)
|
|
26
|
+
FDP_AI__OLLAMA_URL=http://localhost:11434
|
|
27
|
+
FDP_AI__OLLAMA_MODEL=llama3.2
|
|
28
|
+
|
|
29
|
+
# Groq (fast cloud inference)
|
|
30
|
+
# FDP_AI__CHAT_PROVIDER=groq
|
|
31
|
+
# FDP_AI__GROQ_API_KEY=gsk_...
|
|
32
|
+
|
|
33
|
+
# NVIDIA (powerful cloud models)
|
|
34
|
+
# FDP_AI__CHAT_PROVIDER=nvidia
|
|
35
|
+
# FDP_AI__NVIDIA_API_KEY=nvapi-...
|
|
36
|
+
|
|
37
|
+
# Custom (any OpenAI-compatible or Anthropic-compatible endpoint)
|
|
38
|
+
# FDP_AI__CHAT_PROVIDER=custom
|
|
39
|
+
# FDP_AI__CUSTOM_BASE_URL=https://api.minimax.io/anthropic/v1
|
|
40
|
+
# FDP_AI__CUSTOM_API_KEY=sk-...
|
|
41
|
+
# FDP_AI__CUSTOM_MODEL=MiniMax-M2.7
|
|
42
|
+
# FDP_AI__CUSTOM_API_TYPE=anthropic # "openai" (default) or "anthropic"
|
|
43
|
+
#
|
|
44
|
+
# More examples:
|
|
45
|
+
# Together AI:
|
|
46
|
+
# FDP_AI__CUSTOM_BASE_URL=https://api.together.xyz/v1
|
|
47
|
+
# FDP_AI__CUSTOM_MODEL=meta-llama/Llama-3.3-70B-Instruct-Turbo
|
|
48
|
+
# Fireworks:
|
|
49
|
+
# FDP_AI__CUSTOM_BASE_URL=https://api.fireworks.ai/inference/v1
|
|
50
|
+
# FDP_AI__CUSTOM_MODEL=accounts/fireworks/models/llama-v3p3-70b-instruct
|
|
51
|
+
# OpenRouter:
|
|
52
|
+
# FDP_AI__CUSTOM_BASE_URL=https://openrouter.ai/api/v1
|
|
53
|
+
# FDP_AI__CUSTOM_MODEL=meta-llama/llama-3.3-70b-instruct
|
|
54
|
+
|
|
55
|
+
# ─── Embedding Provider ─────────────────────────────────────────
|
|
56
|
+
FDP_AI__EMBEDDING_PROVIDER=local # "local" (sentence-transformers) or "nvidia"
|
|
57
|
+
FDP_AI__EMBEDDING_MODEL=all-MiniLM-L6-v2
|
|
58
|
+
|
|
59
|
+
# ─── AI Features ─────────────────────────────────────────────────
|
|
60
|
+
FDP_AI__AUTO_TAG=true
|
|
61
|
+
FDP_AI__AUTO_SUMMARIZE=true
|
|
62
|
+
FDP_AI__TAG_CONFIDENCE_THRESHOLD=0.7
|
|
63
|
+
FDP_AI__TAG_SUGGESTION_THRESHOLD=0.4
|
|
64
|
+
FDP_AI__SYNC_ENRICHMENT=true # Run AI enrichment inline if Huey worker is not running
|
|
65
|
+
|
|
66
|
+
# ─── Storage ─────────────────────────────────────────────────────
|
|
67
|
+
FDP_STORAGE__BASE_PATH=./data
|
|
68
|
+
FDP_STORAGE__MAX_ARCHIVE_SIZE_MB=50
|
|
69
|
+
|
|
70
|
+
# ─── Server ──────────────────────────────────────────────────────
|
|
71
|
+
FDP_SERVER__HOST=0.0.0.0
|
|
72
|
+
FDP_SERVER__PORT=4040
|
|
73
|
+
FDP_SERVER__CORS_ORIGINS=["http://localhost:5173","http://localhost:4040"]
|
|
74
|
+
FDP_SERVER__SECURE_COOKIES=false # Set true behind HTTPS in production
|
|
75
|
+
|
|
76
|
+
# ─── Docker Compose ──────────────────────────────────────────────
|
|
77
|
+
MEILI_MASTER_KEY=masterkey123
|