detectkit 0.13.1__tar.gz → 0.14.0__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.
Files changed (105) hide show
  1. {detectkit-0.13.1/detectkit.egg-info → detectkit-0.14.0}/PKG-INFO +2 -2
  2. {detectkit-0.13.1 → detectkit-0.14.0}/README.md +1 -1
  3. {detectkit-0.13.1 → detectkit-0.14.0}/detectkit/__init__.py +1 -1
  4. {detectkit-0.13.1 → detectkit-0.14.0}/detectkit/cli/assets/claude/CLAUDE.section.md +6 -1
  5. detectkit-0.14.0/detectkit/cli/assets/claude/skills/dtk-feedback/SKILL.md +155 -0
  6. {detectkit-0.13.1 → detectkit-0.14.0}/detectkit/cli/commands/init_claude.py +2 -1
  7. {detectkit-0.13.1 → detectkit-0.14.0/detectkit.egg-info}/PKG-INFO +2 -2
  8. {detectkit-0.13.1 → detectkit-0.14.0}/detectkit.egg-info/SOURCES.txt +1 -0
  9. {detectkit-0.13.1 → detectkit-0.14.0}/LICENSE +0 -0
  10. {detectkit-0.13.1 → detectkit-0.14.0}/MANIFEST.in +0 -0
  11. {detectkit-0.13.1 → detectkit-0.14.0}/detectkit/alerting/__init__.py +0 -0
  12. {detectkit-0.13.1 → detectkit-0.14.0}/detectkit/alerting/channels/__init__.py +0 -0
  13. {detectkit-0.13.1 → detectkit-0.14.0}/detectkit/alerting/channels/base.py +0 -0
  14. {detectkit-0.13.1 → detectkit-0.14.0}/detectkit/alerting/channels/branding.py +0 -0
  15. {detectkit-0.13.1 → detectkit-0.14.0}/detectkit/alerting/channels/email.py +0 -0
  16. {detectkit-0.13.1 → detectkit-0.14.0}/detectkit/alerting/channels/factory.py +0 -0
  17. {detectkit-0.13.1 → detectkit-0.14.0}/detectkit/alerting/channels/mattermost.py +0 -0
  18. {detectkit-0.13.1 → detectkit-0.14.0}/detectkit/alerting/channels/slack.py +0 -0
  19. {detectkit-0.13.1 → detectkit-0.14.0}/detectkit/alerting/channels/telegram.py +0 -0
  20. {detectkit-0.13.1 → detectkit-0.14.0}/detectkit/alerting/channels/webhook.py +0 -0
  21. {detectkit-0.13.1 → detectkit-0.14.0}/detectkit/alerting/orchestrator/__init__.py +0 -0
  22. {detectkit-0.13.1 → detectkit-0.14.0}/detectkit/alerting/orchestrator/_base.py +0 -0
  23. {detectkit-0.13.1 → detectkit-0.14.0}/detectkit/alerting/orchestrator/_cooldown.py +0 -0
  24. {detectkit-0.13.1 → detectkit-0.14.0}/detectkit/alerting/orchestrator/_decision.py +0 -0
  25. {detectkit-0.13.1 → detectkit-0.14.0}/detectkit/alerting/orchestrator/_dispatch.py +0 -0
  26. {detectkit-0.13.1 → detectkit-0.14.0}/detectkit/alerting/orchestrator/_recovery.py +0 -0
  27. {detectkit-0.13.1 → detectkit-0.14.0}/detectkit/alerting/orchestrator/_types.py +0 -0
  28. {detectkit-0.13.1 → detectkit-0.14.0}/detectkit/alerting/orchestrator/orchestrator.py +0 -0
  29. {detectkit-0.13.1 → detectkit-0.14.0}/detectkit/cli/__init__.py +0 -0
  30. {detectkit-0.13.1 → detectkit-0.14.0}/detectkit/cli/_output.py +0 -0
  31. {detectkit-0.13.1 → detectkit-0.14.0}/detectkit/cli/assets/claude/rules/alerting.md +0 -0
  32. {detectkit-0.13.1 → detectkit-0.14.0}/detectkit/cli/assets/claude/rules/cli.md +0 -0
  33. {detectkit-0.13.1 → detectkit-0.14.0}/detectkit/cli/assets/claude/rules/detectors.md +0 -0
  34. {detectkit-0.13.1 → detectkit-0.14.0}/detectkit/cli/assets/claude/rules/metrics.md +0 -0
  35. {detectkit-0.13.1 → detectkit-0.14.0}/detectkit/cli/assets/claude/rules/overview.md +0 -0
  36. {detectkit-0.13.1 → detectkit-0.14.0}/detectkit/cli/assets/claude/rules/project.md +0 -0
  37. {detectkit-0.13.1 → detectkit-0.14.0}/detectkit/cli/assets/claude/skills/dtk-new-metric/SKILL.md +0 -0
  38. {detectkit-0.13.1 → detectkit-0.14.0}/detectkit/cli/assets/claude/skills/dtk-setup-project/SKILL.md +0 -0
  39. {detectkit-0.13.1 → detectkit-0.14.0}/detectkit/cli/commands/__init__.py +0 -0
  40. {detectkit-0.13.1 → detectkit-0.14.0}/detectkit/cli/commands/clean.py +0 -0
  41. {detectkit-0.13.1 → detectkit-0.14.0}/detectkit/cli/commands/init.py +0 -0
  42. {detectkit-0.13.1 → detectkit-0.14.0}/detectkit/cli/commands/run.py +0 -0
  43. {detectkit-0.13.1 → detectkit-0.14.0}/detectkit/cli/commands/test_alert.py +0 -0
  44. {detectkit-0.13.1 → detectkit-0.14.0}/detectkit/cli/commands/unlock.py +0 -0
  45. {detectkit-0.13.1 → detectkit-0.14.0}/detectkit/cli/main.py +0 -0
  46. {detectkit-0.13.1 → detectkit-0.14.0}/detectkit/config/__init__.py +0 -0
  47. {detectkit-0.13.1 → detectkit-0.14.0}/detectkit/config/metric_config.py +0 -0
  48. {detectkit-0.13.1 → detectkit-0.14.0}/detectkit/config/profile.py +0 -0
  49. {detectkit-0.13.1 → detectkit-0.14.0}/detectkit/config/project_config.py +0 -0
  50. {detectkit-0.13.1 → detectkit-0.14.0}/detectkit/config/validator.py +0 -0
  51. {detectkit-0.13.1 → detectkit-0.14.0}/detectkit/core/__init__.py +0 -0
  52. {detectkit-0.13.1 → detectkit-0.14.0}/detectkit/core/interval.py +0 -0
  53. {detectkit-0.13.1 → detectkit-0.14.0}/detectkit/core/models.py +0 -0
  54. {detectkit-0.13.1 → detectkit-0.14.0}/detectkit/database/__init__.py +0 -0
  55. {detectkit-0.13.1 → detectkit-0.14.0}/detectkit/database/_sql_manager.py +0 -0
  56. {detectkit-0.13.1 → detectkit-0.14.0}/detectkit/database/clickhouse_manager.py +0 -0
  57. {detectkit-0.13.1 → detectkit-0.14.0}/detectkit/database/internal_tables/__init__.py +0 -0
  58. {detectkit-0.13.1 → detectkit-0.14.0}/detectkit/database/internal_tables/_alert_states.py +0 -0
  59. {detectkit-0.13.1 → detectkit-0.14.0}/detectkit/database/internal_tables/_base.py +0 -0
  60. {detectkit-0.13.1 → detectkit-0.14.0}/detectkit/database/internal_tables/_datapoints.py +0 -0
  61. {detectkit-0.13.1 → detectkit-0.14.0}/detectkit/database/internal_tables/_detections.py +0 -0
  62. {detectkit-0.13.1 → detectkit-0.14.0}/detectkit/database/internal_tables/_maintenance.py +0 -0
  63. {detectkit-0.13.1 → detectkit-0.14.0}/detectkit/database/internal_tables/_metrics.py +0 -0
  64. {detectkit-0.13.1 → detectkit-0.14.0}/detectkit/database/internal_tables/_schema.py +0 -0
  65. {detectkit-0.13.1 → detectkit-0.14.0}/detectkit/database/internal_tables/_tasks.py +0 -0
  66. {detectkit-0.13.1 → detectkit-0.14.0}/detectkit/database/internal_tables/manager.py +0 -0
  67. {detectkit-0.13.1 → detectkit-0.14.0}/detectkit/database/manager.py +0 -0
  68. {detectkit-0.13.1 → detectkit-0.14.0}/detectkit/database/mysql_manager.py +0 -0
  69. {detectkit-0.13.1 → detectkit-0.14.0}/detectkit/database/postgres_manager.py +0 -0
  70. {detectkit-0.13.1 → detectkit-0.14.0}/detectkit/database/tables.py +0 -0
  71. {detectkit-0.13.1 → detectkit-0.14.0}/detectkit/detectors/__init__.py +0 -0
  72. {detectkit-0.13.1 → detectkit-0.14.0}/detectkit/detectors/base.py +0 -0
  73. {detectkit-0.13.1 → detectkit-0.14.0}/detectkit/detectors/factory.py +0 -0
  74. {detectkit-0.13.1 → detectkit-0.14.0}/detectkit/detectors/seasonality.py +0 -0
  75. {detectkit-0.13.1 → detectkit-0.14.0}/detectkit/detectors/statistical/__init__.py +0 -0
  76. {detectkit-0.13.1 → detectkit-0.14.0}/detectkit/detectors/statistical/_windowed.py +0 -0
  77. {detectkit-0.13.1 → detectkit-0.14.0}/detectkit/detectors/statistical/iqr.py +0 -0
  78. {detectkit-0.13.1 → detectkit-0.14.0}/detectkit/detectors/statistical/mad.py +0 -0
  79. {detectkit-0.13.1 → detectkit-0.14.0}/detectkit/detectors/statistical/manual_bounds.py +0 -0
  80. {detectkit-0.13.1 → detectkit-0.14.0}/detectkit/detectors/statistical/zscore.py +0 -0
  81. {detectkit-0.13.1 → detectkit-0.14.0}/detectkit/loaders/__init__.py +0 -0
  82. {detectkit-0.13.1 → detectkit-0.14.0}/detectkit/loaders/metric_loader.py +0 -0
  83. {detectkit-0.13.1 → detectkit-0.14.0}/detectkit/loaders/query_template.py +0 -0
  84. {detectkit-0.13.1 → detectkit-0.14.0}/detectkit/orchestration/__init__.py +0 -0
  85. {detectkit-0.13.1 → detectkit-0.14.0}/detectkit/orchestration/error_dispatch.py +0 -0
  86. {detectkit-0.13.1 → detectkit-0.14.0}/detectkit/orchestration/task_manager/__init__.py +0 -0
  87. {detectkit-0.13.1 → detectkit-0.14.0}/detectkit/orchestration/task_manager/_alert_step.py +0 -0
  88. {detectkit-0.13.1 → detectkit-0.14.0}/detectkit/orchestration/task_manager/_base.py +0 -0
  89. {detectkit-0.13.1 → detectkit-0.14.0}/detectkit/orchestration/task_manager/_detect_step.py +0 -0
  90. {detectkit-0.13.1 → detectkit-0.14.0}/detectkit/orchestration/task_manager/_load_step.py +0 -0
  91. {detectkit-0.13.1 → detectkit-0.14.0}/detectkit/orchestration/task_manager/_types.py +0 -0
  92. {detectkit-0.13.1 → detectkit-0.14.0}/detectkit/orchestration/task_manager/manager.py +0 -0
  93. {detectkit-0.13.1 → detectkit-0.14.0}/detectkit/utils/__init__.py +0 -0
  94. {detectkit-0.13.1 → detectkit-0.14.0}/detectkit/utils/datetime_utils.py +0 -0
  95. {detectkit-0.13.1 → detectkit-0.14.0}/detectkit/utils/env_interpolation.py +0 -0
  96. {detectkit-0.13.1 → detectkit-0.14.0}/detectkit/utils/json_utils.py +0 -0
  97. {detectkit-0.13.1 → detectkit-0.14.0}/detectkit/utils/stats.py +0 -0
  98. {detectkit-0.13.1 → detectkit-0.14.0}/detectkit.egg-info/dependency_links.txt +0 -0
  99. {detectkit-0.13.1 → detectkit-0.14.0}/detectkit.egg-info/entry_points.txt +0 -0
  100. {detectkit-0.13.1 → detectkit-0.14.0}/detectkit.egg-info/requires.txt +0 -0
  101. {detectkit-0.13.1 → detectkit-0.14.0}/detectkit.egg-info/top_level.txt +0 -0
  102. {detectkit-0.13.1 → detectkit-0.14.0}/pyproject.toml +0 -0
  103. {detectkit-0.13.1 → detectkit-0.14.0}/requirements.txt +0 -0
  104. {detectkit-0.13.1 → detectkit-0.14.0}/setup.cfg +0 -0
  105. {detectkit-0.13.1 → detectkit-0.14.0}/setup.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: detectkit
3
- Version: 0.13.1
3
+ Version: 0.14.0
4
4
  Summary: Metric monitoring with automatic anomaly detection
5
5
  Author: detectkit team
6
6
  License: MIT
@@ -87,7 +87,7 @@ Dynamic: license-file
87
87
  - **Database agnostic** — ClickHouse, PostgreSQL, MySQL
88
88
  - **Idempotent** — resume from interruptions, no duplicate processing
89
89
  - **CLI** — `dtk init`, `dtk run --select`, `dtk unlock`, `dtk clean`, tag-based selectors
90
- - **AI-native onboarding** — `dtk init-claude` sets up Claude Code context (CLAUDE.md + rules + a metric-scaffolding skill) so an assistant can help you build metrics out of the box
90
+ - **AI-native onboarding** — `dtk init-claude` sets up Claude Code context (CLAUDE.md + rules + three skills) so an assistant can scaffold metrics, configure databases, and file feedback upstream
91
91
 
92
92
  ## Installation
93
93
 
@@ -19,7 +19,7 @@
19
19
  - **Database agnostic** — ClickHouse, PostgreSQL, MySQL
20
20
  - **Idempotent** — resume from interruptions, no duplicate processing
21
21
  - **CLI** — `dtk init`, `dtk run --select`, `dtk unlock`, `dtk clean`, tag-based selectors
22
- - **AI-native onboarding** — `dtk init-claude` sets up Claude Code context (CLAUDE.md + rules + a metric-scaffolding skill) so an assistant can help you build metrics out of the box
22
+ - **AI-native onboarding** — `dtk init-claude` sets up Claude Code context (CLAUDE.md + rules + three skills) so an assistant can scaffold metrics, configure databases, and file feedback upstream
23
23
 
24
24
  ## Installation
25
25
 
@@ -4,7 +4,7 @@ detectk - Anomaly Detection for Time-Series Metrics
4
4
  A Python library for data analysts and engineers to monitor metrics with automatic anomaly detection.
5
5
  """
6
6
 
7
- __version__ = "0.13.1"
7
+ __version__ = "0.14.0"
8
8
 
9
9
  from detectkit.core.interval import Interval
10
10
  from detectkit.core.models import ColumnDefinition, TableModel
@@ -26,7 +26,7 @@ version — **read the relevant one on demand** instead of guessing:
26
26
  | Choosing/tuning detectors, preprocessing, trends, seasonality | `.claude/rules/detectkit/detectors.md` |
27
27
  | Alert rules (quorum/direction/consecutive), cooldown, recovery, templates | `.claude/rules/detectkit/alerting.md` |
28
28
 
29
- ### Set up & scaffold (skills)
29
+ ### Skills
30
30
 
31
31
  - **First-time setup** — use the **`dtk-setup-project`** skill to configure the
32
32
  database connection in `profiles.yml` (the `dtk init` placeholder ships example
@@ -34,6 +34,11 @@ version — **read the relevant one on demand** instead of guessing:
34
34
  channel.
35
35
  - **A new metric** — use the **`dtk-new-metric`** skill; it walks the config out
36
36
  to a YAML file that validates and is ready to run.
37
+ - **Hit a detectkit bug, or have feedback** — once you've ruled out a local
38
+ config fix (see the gotchas below), use the **`dtk-feedback`** skill to file a
39
+ redacted bug report, feature request, or comment as a GitHub issue on the
40
+ upstream repo. It auto-collects the diagnostic context, strips every secret,
41
+ and never submits without showing you the exact text first.
37
42
 
38
43
  ### Gotchas that bite (keep these in mind)
39
44
 
@@ -0,0 +1,155 @@
1
+ ---
2
+ name: dtk-feedback
3
+ description: >-
4
+ Report a detectkit bug, request a feature, or send feedback to the maintainers
5
+ as a GitHub issue on the upstream repo (alexeiveselov92/detectkit). Use when a
6
+ dtk command errors or behaves unexpectedly and it looks like a detectkit defect
7
+ (not the user's config), when the user wishes detectkit did something it
8
+ doesn't, or when they ask to report/file an issue, send feedback, or contact
9
+ the maintainers. Auto-collects diagnostic context, redacts all secrets, and
10
+ never submits without explicit confirmation.
11
+ ---
12
+
13
+ # Send feedback to the detectkit maintainers
14
+
15
+ Turn a problem, a wish, or a comment into a clear GitHub issue on the upstream
16
+ repo **`alexeiveselov92/detectkit`** — carrying the diagnostic context
17
+ maintainers need and **leaking no secrets**. You are filing a *public* issue on
18
+ the user's behalf: never submit anything without showing the exact text and
19
+ getting an explicit "yes".
20
+
21
+ This skill is the procedure; the reference for ruling out config problems lives
22
+ under `.claude/rules/detectkit/`.
23
+
24
+ ## Step 0 — Decide whether this belongs upstream
25
+
26
+ - **Bug** — a `dtk` command errors or produces clearly wrong output, **and**
27
+ you've ruled out a local config/usage mistake (Step 1).
28
+ - **Feature request** — the user needs detectkit to do something it doesn't.
29
+ - **Feedback / question** — a comment, confusion, or rough edge worth surfacing.
30
+
31
+ Do **not** open an issue for the user's own SQL, data, database, or
32
+ configuration mistakes — those are fixed locally with the rules files, not
33
+ reported as detectkit bugs. Only genuine detectkit behavior goes upstream.
34
+
35
+ ## Step 1 — Rule out config first (for "it doesn't work")
36
+
37
+ Before calling something a bug, confirm it isn't a configuration or usage
38
+ problem. Read the matching `.claude/rules/detectkit/` file and check the usual
39
+ gotchas:
40
+
41
+ - the loading query filters on `{{ dtk_start_time }}` **and** `{{ dtk_end_time }}`;
42
+ - metric `name` is unique across the project;
43
+ - `profiles.yml` has the right location fields (`internal_database`/`data_database`,
44
+ or Postgres schemas) and a `default_profile` that exists;
45
+ - `alert_cooldown` is set; channels referenced by metrics exist.
46
+
47
+ If a local fix exists, **do that and stop** — don't file an issue. Escalate only
48
+ what is genuinely a detectkit defect.
49
+
50
+ ## Step 2 — Gather context (do this for the user, don't make them dig)
51
+
52
+ Collect automatically:
53
+
54
+ - `dtk --version` — the detectkit version (**always** include it).
55
+ - Python version (`python3 --version`) and OS.
56
+ - The database backend **type only** (`clickhouse` / `postgres` / `mysql`) from
57
+ `profiles.yml`'s `type:` — never the host, port, or credentials.
58
+
59
+ For a **bug**, also gather:
60
+
61
+ - the exact command that was run;
62
+ - the full error message / traceback;
63
+ - what the user expected vs. what happened;
64
+ - a **minimal reproduction** — the failing metric YAML and/or SQL, with every
65
+ secret stripped (Step 3).
66
+
67
+ ## Step 3 — Redact secrets (mandatory — before anything is shown or sent)
68
+
69
+ This is a public issue. Strip from every snippet you include:
70
+
71
+ - passwords, tokens, `bot_token`, `smtp_password`, API keys;
72
+ - `webhook_url`s, `chat_id`s, email addresses;
73
+ - hostnames, IPs, ports, and real database / schema / table names;
74
+ - the resolved value of anything inside `{{ env_var('…') }}` or `${…}` — keep the
75
+ `env_var(...)` shape, drop the value.
76
+
77
+ Replace with placeholders like `<redacted>`, `<your-host>`, `<your_table>` while
78
+ keeping the structure intact so the bug is still reproducible. **If you're not
79
+ sure whether something is sensitive, redact it.**
80
+
81
+ ## Step 4 — Search for duplicates
82
+
83
+ ```bash
84
+ gh issue list --repo alexeiveselov92/detectkit --search "<keywords>" --state all
85
+ ```
86
+
87
+ If a matching issue already exists, offer to **add a comment** or a 👍 reaction
88
+ instead of opening a new one:
89
+
90
+ ```bash
91
+ gh issue comment <number> --repo alexeiveselov92/detectkit --body "<note>"
92
+ ```
93
+
94
+ This gives maintainers signal on frequency instead of a pile of duplicates.
95
+
96
+ ## Step 5 — Draft the issue
97
+
98
+ Write a specific title (the actual symptom in a few words, not "bug"). Pick the
99
+ body template by type:
100
+
101
+ - **Bug** — `Summary` / `Environment` (detectkit version, Python, OS, backend) /
102
+ `Steps to reproduce` / `Expected` / `Actual` (with the traceback in a fenced
103
+ code block) / `Minimal config` (redacted).
104
+ - **Feature request** — `Problem` (the underlying need, not just the proposed
105
+ fix) / `Proposed behavior` / `Alternatives considered`.
106
+ - **Feedback** — free-form, concrete and respectful.
107
+
108
+ End the body with an attribution marker so maintainers can see it came through
109
+ the assistant funnel and on which version:
110
+
111
+ ```
112
+ _Filed via the dtk init-claude assistant (detectkit <version>)._
113
+ ```
114
+
115
+ ## Step 6 — Preview and confirm (no silent submits)
116
+
117
+ Show the user the **full** title and body exactly as they will be posted, and
118
+ the target repo. Ask them to confirm: secrets redacted? right repo? Proceed to
119
+ Step 7 only on an explicit "yes". If they want edits, revise and re-preview.
120
+
121
+ ## Step 7 — Submit
122
+
123
+ **Preferred — `gh` CLI** (check it's installed and authenticated first with
124
+ `gh auth status`). Write the body to a temp file to avoid shell-escaping the
125
+ markdown/traceback:
126
+
127
+ ```bash
128
+ gh issue create --repo alexeiveselov92/detectkit \
129
+ --title "<title>" --body-file <tmpfile>
130
+ ```
131
+
132
+ Tag the issue so maintainers can triage assistant-filed reports: add the type
133
+ label (`--label bug` / `--label enhancement`) **and** `--label "via:assistant"`.
134
+ Labels must already exist on the repo, so if `gh` reports an unknown label,
135
+ **retry without the failing label(s)** — never fail the report over a missing
136
+ label. (Attribution also lives in the Step 5 body marker, so maintainers can
137
+ filter with `in:body "Filed via the dtk init-claude assistant"` even before the
138
+ `via:assistant` label exists.) Return the issue URL to the user.
139
+
140
+ **Fallback — no `gh`, or not authenticated.** Build a prefilled "new issue" URL
141
+ and hand it to the user to open and submit in their browser:
142
+
143
+ ```
144
+ https://github.com/alexeiveselov92/detectkit/issues/new?title=<url-encoded>&body=<url-encoded>
145
+ ```
146
+
147
+ URL-encode both fields. If the body is too long for a URL, give the user the
148
+ title plus the body text to paste, and the plain link
149
+ `https://github.com/alexeiveselov92/detectkit/issues/new`.
150
+
151
+ ## Step 8 — Close the loop
152
+
153
+ Give the user the issue URL (or the prefilled link), mention they can subscribe
154
+ for updates, and — if you also worked around the bug locally — restate that
155
+ local fix so they're unblocked right now, not just waiting on the issue.
@@ -11,7 +11,8 @@ It writes three things into the target directory:
11
11
  injected/refreshed between HTML-comment markers (existing content is kept).
12
12
  - ``.claude/rules/detectkit/`` — the reference docs the assistant reads on
13
13
  demand (overview, cli, project, metrics, detectors, alerting).
14
- - ``.claude/skills/`` — user-facing skills (``dtk-new-metric``).
14
+ - ``.claude/skills/`` — user-facing skills (``dtk-setup-project``,
15
+ ``dtk-new-metric``, ``dtk-feedback``).
15
16
 
16
17
  The source of truth for all of the above lives in ``detectkit/cli/assets/claude``
17
18
  and ships with the package, so re-running this command after upgrading detectkit
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: detectkit
3
- Version: 0.13.1
3
+ Version: 0.14.0
4
4
  Summary: Metric monitoring with automatic anomaly detection
5
5
  Author: detectkit team
6
6
  License: MIT
@@ -87,7 +87,7 @@ Dynamic: license-file
87
87
  - **Database agnostic** — ClickHouse, PostgreSQL, MySQL
88
88
  - **Idempotent** — resume from interruptions, no duplicate processing
89
89
  - **CLI** — `dtk init`, `dtk run --select`, `dtk unlock`, `dtk clean`, tag-based selectors
90
- - **AI-native onboarding** — `dtk init-claude` sets up Claude Code context (CLAUDE.md + rules + a metric-scaffolding skill) so an assistant can help you build metrics out of the box
90
+ - **AI-native onboarding** — `dtk init-claude` sets up Claude Code context (CLAUDE.md + rules + three skills) so an assistant can scaffold metrics, configure databases, and file feedback upstream
91
91
 
92
92
  ## Installation
93
93
 
@@ -39,6 +39,7 @@ detectkit/cli/assets/claude/rules/detectors.md
39
39
  detectkit/cli/assets/claude/rules/metrics.md
40
40
  detectkit/cli/assets/claude/rules/overview.md
41
41
  detectkit/cli/assets/claude/rules/project.md
42
+ detectkit/cli/assets/claude/skills/dtk-feedback/SKILL.md
42
43
  detectkit/cli/assets/claude/skills/dtk-new-metric/SKILL.md
43
44
  detectkit/cli/assets/claude/skills/dtk-setup-project/SKILL.md
44
45
  detectkit/cli/commands/__init__.py
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes