Skip to content

Commit c25cd36

Browse files
authored
Merge pull request #6 from iwillig/ivan/clean-up-project-for-inital-release
Clean up project for initial release
2 parents 16f4412 + 42d8370 commit c25cd36

File tree

12 files changed

+109
-120
lines changed

12 files changed

+109
-120
lines changed

.clojure-skills/config.edn

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
{:database {:path "~/dev/clojure-skills/clojure-skills.db",
2+
:auto-migrate true},
3+
:project {:root nil,
4+
:skills-dir "skills",
5+
:prompts-dir "prompts",
6+
:build-dir "_build"},
7+
8+
:permissions
9+
{:prompt true}
10+
11+
:search {:max-results 50, :context-lines 3},
12+
:output {:format :table, :color true}}

clojure-skills.db

-2.1 MB
Binary file not shown.

deps.edn

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@
1010
org.clj-commons/pretty {:mvn/version "3.6.7"}
1111
dev.weavejester/hashp {:mvn/version "0.5.1"}
1212
io.github.paintparty/bling {:mvn/version "0.8.8"}
13-
dev.glossa/metazoa {:mvn/version "0.2.298"}
13+
1414
mvxcvi/puget {:mvn/version "1.3.4"}
1515

1616
;; SQL database dependencies
@@ -26,6 +26,7 @@
2626

2727
:aliases {:dev {:extra-deps
2828
{vvvvalvalval/scope-capture {:mvn/version "0.3.3"}
29+
dev.glossa/metazoa {:mvn/version "0.2.298"}
2930
org.clojure/tools.nrepl {:mvn/version "0.2.11"}
3031
nubank/matcher-combinators {:mvn/version "3.9.1"}
3132
com.stuartsierra/component.repl {:mvn/version "0.2.0"}

prompt_configs/clojure_build.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,6 @@ fragments:
1515
- skills/libraries/metadata/metazoa.md
1616
- skills/tooling/hashp.md
1717
- skills/libraries/logging/pretty.md
18-
- skills/tooling/clojure_lsp_api
18+
- skills/tooling/clojure_lsp_api.md
1919
- skills/tooling/clj_paren_repair.md
2020
references: []

prompt_configs/clojure_skill_builder.yaml

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -13,9 +13,7 @@ fragments:
1313
- skills/libraries/metadata/metazoa.md
1414
- skills/tooling/hashp.md
1515
- skills/libraries/logging/pretty.md
16-
- skills/tooling/clojure_lsp_api
16+
- skills/tooling/clojure_lsp_api.md
1717
- skills/tooling/clj_paren_repair.md
1818
- skills/tooling/clojure_mcp_light.md
19-
- skills/libraries/data_formats/pretty.md
20-
21-
references: []
19+
references: []

resources/migrations/001-initial-schema.edn

Lines changed: 63 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
:up
44
["PRAGMA foreign_keys = ON"
55

6+
;; Skills table
67
"CREATE TABLE IF NOT EXISTS skills (
78
id INTEGER PRIMARY KEY AUTOINCREMENT,
89
path TEXT NOT NULL UNIQUE,
@@ -22,6 +23,7 @@
2223
"CREATE INDEX IF NOT EXISTS idx_skills_name ON skills(name)"
2324
"CREATE INDEX IF NOT EXISTS idx_skills_hash ON skills(file_hash)"
2425

26+
;; Prompts table (includes fragment_refs column from migration 006)
2527
"CREATE TABLE IF NOT EXISTS prompts (
2628
id INTEGER PRIMARY KEY AUTOINCREMENT,
2729
path TEXT NOT NULL UNIQUE,
@@ -33,25 +35,65 @@
3335
file_hash TEXT NOT NULL,
3436
size_bytes INTEGER NOT NULL,
3537
token_count INTEGER,
38+
fragment_refs TEXT,
3639
created_at TEXT NOT NULL DEFAULT (datetime('now')),
3740
updated_at TEXT NOT NULL DEFAULT (datetime('now'))
3841
)"
3942

40-
"CREATE INDEX IF NOT EXISTS idx_prompts_name ON prompts(name)"
4143
"CREATE INDEX IF NOT EXISTS idx_prompts_hash ON prompts(file_hash)"
44+
;; Unique index on name (from migration 008)
45+
"CREATE UNIQUE INDEX IF NOT EXISTS idx_prompts_name ON prompts(name)"
4246

43-
"CREATE TABLE IF NOT EXISTS prompt_skills (
44-
prompt_id INTEGER NOT NULL,
47+
;; Prompt fragments table (from migration 006)
48+
"CREATE TABLE IF NOT EXISTS prompt_fragments (
49+
id INTEGER PRIMARY KEY AUTOINCREMENT,
50+
name TEXT NOT NULL UNIQUE,
51+
title TEXT,
52+
description TEXT,
53+
created_at TEXT NOT NULL DEFAULT (datetime('now')),
54+
updated_at TEXT NOT NULL DEFAULT (datetime('now'))
55+
)"
56+
57+
"CREATE INDEX IF NOT EXISTS idx_prompt_fragments_name ON prompt_fragments(name)"
58+
59+
;; Prompt fragment skills join table (from migration 006)
60+
"CREATE TABLE IF NOT EXISTS prompt_fragment_skills (
61+
fragment_id INTEGER NOT NULL,
4562
skill_id INTEGER NOT NULL,
4663
position INTEGER NOT NULL,
47-
PRIMARY KEY (prompt_id, skill_id),
48-
FOREIGN KEY (prompt_id) REFERENCES prompts(id) ON DELETE CASCADE,
64+
created_at TEXT NOT NULL DEFAULT (datetime('now')),
65+
PRIMARY KEY (fragment_id, skill_id),
66+
FOREIGN KEY (fragment_id) REFERENCES prompt_fragments(id) ON DELETE CASCADE,
4967
FOREIGN KEY (skill_id) REFERENCES skills(id) ON DELETE CASCADE
5068
)"
5169

52-
"CREATE INDEX IF NOT EXISTS idx_prompt_skills_prompt ON prompt_skills(prompt_id)"
53-
"CREATE INDEX IF NOT EXISTS idx_prompt_skills_skill ON prompt_skills(skill_id)"
70+
"CREATE INDEX IF NOT EXISTS idx_prompt_fragment_skills_fragment ON prompt_fragment_skills(fragment_id)"
71+
"CREATE INDEX IF NOT EXISTS idx_prompt_fragment_skills_skill ON prompt_fragment_skills(skill_id)"
5472

73+
;; Prompt references table (from migration 006, with FIXED nullable target_prompt_id)
74+
"CREATE TABLE IF NOT EXISTS prompt_references (
75+
id INTEGER PRIMARY KEY AUTOINCREMENT,
76+
source_prompt_id INTEGER NOT NULL,
77+
target_prompt_id INTEGER,
78+
target_fragment_id INTEGER,
79+
reference_type TEXT NOT NULL CHECK(reference_type IN ('prompt', 'fragment')),
80+
position INTEGER NOT NULL,
81+
created_at TEXT NOT NULL DEFAULT (datetime('now')),
82+
FOREIGN KEY (source_prompt_id) REFERENCES prompts(id) ON DELETE CASCADE,
83+
FOREIGN KEY (target_prompt_id) REFERENCES prompts(id) ON DELETE CASCADE,
84+
FOREIGN KEY (target_fragment_id) REFERENCES prompt_fragments(id) ON DELETE CASCADE,
85+
CONSTRAINT chk_target_reference CHECK (
86+
(target_prompt_id IS NOT NULL AND target_fragment_id IS NULL) OR
87+
(target_prompt_id IS NULL AND target_fragment_id IS NOT NULL)
88+
)
89+
)"
90+
91+
"CREATE INDEX IF NOT EXISTS idx_prompt_references_source ON prompt_references(source_prompt_id)"
92+
"CREATE INDEX IF NOT EXISTS idx_prompt_references_target_prompt ON prompt_references(target_prompt_id)"
93+
"CREATE INDEX IF NOT EXISTS idx_prompt_references_target_fragment ON prompt_references(target_fragment_id)"
94+
"CREATE INDEX IF NOT EXISTS idx_prompt_references_type ON prompt_references(reference_type)"
95+
96+
;; Skills FTS table
5597
"CREATE VIRTUAL TABLE IF NOT EXISTS skills_fts USING fts5(
5698
path,
5799
category,
@@ -63,6 +105,7 @@
63105
content_rowid='id'
64106
)"
65107

108+
;; Skills FTS triggers
66109
"CREATE TRIGGER IF NOT EXISTS skills_ai AFTER INSERT ON skills BEGIN
67110
INSERT INTO skills_fts(rowid, path, category, name, title, description, content)
68111
VALUES (new.id, new.path, new.category, new.name, new.title, new.description, new.content);
@@ -80,6 +123,7 @@
80123
VALUES (new.id, new.path, new.category, new.name, new.title, new.description, new.content);
81124
END"
82125

126+
;; Prompts FTS table
83127
"CREATE VIRTUAL TABLE IF NOT EXISTS prompts_fts USING fts5(
84128
path,
85129
name,
@@ -91,6 +135,7 @@
91135
content_rowid='id'
92136
)"
93137

138+
;; Prompts FTS triggers
94139
"CREATE TRIGGER IF NOT EXISTS prompts_ai AFTER INSERT ON prompts BEGIN
95140
INSERT INTO prompts_fts(rowid, path, name, title, author, description, content)
96141
VALUES (new.id, new.path, new.name, new.title, new.author, new.description, new.content);
@@ -117,11 +162,18 @@
117162
"DROP TRIGGER IF EXISTS skills_ad"
118163
"DROP TRIGGER IF EXISTS skills_ai"
119164
"DROP TABLE IF EXISTS skills_fts"
120-
"DROP INDEX IF EXISTS idx_prompt_skills_skill"
121-
"DROP INDEX IF EXISTS idx_prompt_skills_prompt"
122-
"DROP TABLE IF EXISTS prompt_skills"
123-
"DROP INDEX IF EXISTS idx_prompts_hash"
165+
"DROP INDEX IF EXISTS idx_prompt_references_type"
166+
"DROP INDEX IF EXISTS idx_prompt_references_target_fragment"
167+
"DROP INDEX IF EXISTS idx_prompt_references_target_prompt"
168+
"DROP INDEX IF EXISTS idx_prompt_references_source"
169+
"DROP TABLE IF EXISTS prompt_references"
170+
"DROP INDEX IF EXISTS idx_prompt_fragment_skills_skill"
171+
"DROP INDEX IF EXISTS idx_prompt_fragment_skills_fragment"
172+
"DROP TABLE IF EXISTS prompt_fragment_skills"
173+
"DROP INDEX IF EXISTS idx_prompt_fragments_name"
174+
"DROP TABLE IF EXISTS prompt_fragments"
124175
"DROP INDEX IF EXISTS idx_prompts_name"
176+
"DROP INDEX IF EXISTS idx_prompts_hash"
125177
"DROP TABLE IF EXISTS prompts"
126178
"DROP INDEX IF EXISTS idx_skills_hash"
127179
"DROP INDEX IF EXISTS idx_skills_name"

resources/migrations/006-prompt-fragments.edn

Lines changed: 0 additions & 62 deletions
This file was deleted.

resources/migrations/007-drop-prompt-skills.edn

Lines changed: 0 additions & 17 deletions
This file was deleted.

resources/migrations/008-unique-prompt-name.edn

Lines changed: 0 additions & 9 deletions
This file was deleted.

src/clojure_skills/config.clj

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -106,10 +106,7 @@
106106
:color true}
107107

108108
:permissions
109-
{:plan false
110-
:task false
111-
:task-list false
112-
:prompt false}})
109+
{:prompt false}})
113110

114111
(defn get-config-file-path
115112
"Get path to config.edn file."

0 commit comments

Comments
 (0)