lockthard-cli 0.1.4__tar.gz → 0.2.1__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.
- {lockthard_cli-0.1.4 → lockthard_cli-0.2.1}/PKG-INFO +92 -92
- {lockthard_cli-0.1.4 → lockthard_cli-0.2.1}/lockthard_cli/__init__.py +1 -1
- {lockthard_cli-0.1.4 → lockthard_cli-0.2.1}/lockthard_cli/cli.py +67 -16
- {lockthard_cli-0.1.4 → lockthard_cli-0.2.1}/lockthard_cli/formatters.py +1 -41
- {lockthard_cli-0.1.4 → lockthard_cli-0.2.1}/lockthard_cli.egg-info/PKG-INFO +92 -92
- {lockthard_cli-0.1.4 → lockthard_cli-0.2.1}/pyproject.toml +5 -2
- {lockthard_cli-0.1.4 → lockthard_cli-0.2.1}/setup.cfg +4 -4
- {lockthard_cli-0.1.4 → lockthard_cli-0.2.1}/README.md +0 -0
- {lockthard_cli-0.1.4 → lockthard_cli-0.2.1}/lockthard_cli/auth.py +0 -0
- {lockthard_cli-0.1.4 → lockthard_cli-0.2.1}/lockthard_cli/client.py +0 -0
- {lockthard_cli-0.1.4 → lockthard_cli-0.2.1}/lockthard_cli/config.py +0 -0
- {lockthard_cli-0.1.4 → lockthard_cli-0.2.1}/lockthard_cli.egg-info/SOURCES.txt +0 -0
- {lockthard_cli-0.1.4 → lockthard_cli-0.2.1}/lockthard_cli.egg-info/dependency_links.txt +0 -0
- {lockthard_cli-0.1.4 → lockthard_cli-0.2.1}/lockthard_cli.egg-info/entry_points.txt +0 -0
- {lockthard_cli-0.1.4 → lockthard_cli-0.2.1}/lockthard_cli.egg-info/requires.txt +0 -0
- {lockthard_cli-0.1.4 → lockthard_cli-0.2.1}/lockthard_cli.egg-info/top_level.txt +0 -0
- {lockthard_cli-0.1.4 → lockthard_cli-0.2.1}/tests/test_cli.py +0 -0
|
@@ -1,92 +1,92 @@
|
|
|
1
|
-
Metadata-Version: 2.4
|
|
2
|
-
Name: lockthard-cli
|
|
3
|
-
Version: 0.1
|
|
4
|
-
Summary:
|
|
5
|
-
Author-email: Lockthard Team <info@lockthard.es>
|
|
6
|
-
License: MIT
|
|
7
|
-
Project-URL: Homepage, https://lockthard.es
|
|
8
|
-
Keywords: cli,ai-tools,agents,mcp,lockthard
|
|
9
|
-
Classifier: Development Status :: 4 - Beta
|
|
10
|
-
Classifier: Environment :: Console
|
|
11
|
-
Classifier: Intended Audience :: Developers
|
|
12
|
-
Classifier: Programming Language :: Python :: 3
|
|
13
|
-
Classifier: Programming Language :: Python :: 3.10
|
|
14
|
-
Classifier: Programming Language :: Python :: 3.11
|
|
15
|
-
Classifier: Programming Language :: Python :: 3.12
|
|
16
|
-
Classifier: Topic :: Utilities
|
|
17
|
-
Requires-Python: >=3.10
|
|
18
|
-
Description-Content-Type: text/markdown
|
|
19
|
-
Requires-Dist: click>=8.1.0
|
|
20
|
-
Requires-Dist: requests>=2.28.0
|
|
21
|
-
Requires-Dist: rich>=13.0.0
|
|
22
|
-
|
|
23
|
-
# LOCKTHARD CLI (`lockthard`)
|
|
24
|
-
|
|
25
|
-
A super efficient, scriptable command-line interface and AI agent client for **LOCKTHARD** (https://lockthard.es).
|
|
26
|
-
|
|
27
|
-
Allows both human developers and autonomous AI agents (Claude Code, Antigravity, Aider, Cursor, etc.) to query, search, and inspect 61+ tablets and 1200+ AI tools with minimum token usage and zero prompt overhead.
|
|
28
|
-
|
|
29
|
-
## Installation
|
|
30
|
-
|
|
31
|
-
```bash
|
|
32
|
-
pip install lockthard-cli
|
|
33
|
-
```
|
|
34
|
-
|
|
35
|
-
Or run without installing:
|
|
36
|
-
|
|
37
|
-
```bash
|
|
38
|
-
pipx run lockthard-cli --help
|
|
39
|
-
```
|
|
40
|
-
|
|
41
|
-
## Quick Start
|
|
42
|
-
|
|
43
|
-
### 1. Authentication
|
|
44
|
-
Get your API key from [lockthard.es](https://lockthard.es).
|
|
45
|
-
|
|
46
|
-
- **For AI Agents & CI/CD:**
|
|
47
|
-
```bash
|
|
48
|
-
export LOCKTHARD_API_KEY="lk_your_token_here"
|
|
49
|
-
```
|
|
50
|
-
- **Interactive Browser Login (Humans):**
|
|
51
|
-
```bash
|
|
52
|
-
lockthard login
|
|
53
|
-
```
|
|
54
|
-
- **Manual Login:**
|
|
55
|
-
```bash
|
|
56
|
-
lockthard login --token "lk_your_token_here"
|
|
57
|
-
```
|
|
58
|
-
|
|
59
|
-
### 2. Commands
|
|
60
|
-
|
|
61
|
-
```bash
|
|
62
|
-
# Ping service
|
|
63
|
-
lockthard ping
|
|
64
|
-
|
|
65
|
-
# Search tools (returns concise ASCII table)
|
|
66
|
-
lockthard search "ocr"
|
|
67
|
-
|
|
68
|
-
# Search tools in raw JSON (for agents / jq)
|
|
69
|
-
lockthard search "ocr" --json
|
|
70
|
-
|
|
71
|
-
# List all tablets
|
|
72
|
-
lockthard tablets list
|
|
73
|
-
|
|
74
|
-
# Inspect a specific tablet
|
|
75
|
-
lockthard tablets get ocr
|
|
76
|
-
|
|
77
|
-
# Inspect tool details
|
|
78
|
-
lockthard tools get "Chandra OCR"
|
|
79
|
-
|
|
80
|
-
# Display CLI agent guide
|
|
81
|
-
lockthard guide
|
|
82
|
-
```
|
|
83
|
-
|
|
84
|
-
## Options
|
|
85
|
-
|
|
86
|
-
- `--json` / `-j`: Output raw JSON without Rich styling.
|
|
87
|
-
- `--url` / `-u`: Override base server URL (default: `https://lockthard.es`).
|
|
88
|
-
- `--token` / `-t`: Override API token.
|
|
89
|
-
|
|
90
|
-
## License
|
|
91
|
-
|
|
92
|
-
MIT License
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: lockthard-cli
|
|
3
|
+
Version: 0.2.1
|
|
4
|
+
Summary: CLI and AI agent client for LOCKTHARD — query 2100+ curated AI tools across 86+ tablets
|
|
5
|
+
Author-email: Lockthard Team <info@lockthard.es>
|
|
6
|
+
License: MIT
|
|
7
|
+
Project-URL: Homepage, https://lockthard.es
|
|
8
|
+
Keywords: cli,ai-tools,agents,mcp,lockthard
|
|
9
|
+
Classifier: Development Status :: 4 - Beta
|
|
10
|
+
Classifier: Environment :: Console
|
|
11
|
+
Classifier: Intended Audience :: Developers
|
|
12
|
+
Classifier: Programming Language :: Python :: 3
|
|
13
|
+
Classifier: Programming Language :: Python :: 3.10
|
|
14
|
+
Classifier: Programming Language :: Python :: 3.11
|
|
15
|
+
Classifier: Programming Language :: Python :: 3.12
|
|
16
|
+
Classifier: Topic :: Utilities
|
|
17
|
+
Requires-Python: >=3.10
|
|
18
|
+
Description-Content-Type: text/markdown
|
|
19
|
+
Requires-Dist: click>=8.1.0
|
|
20
|
+
Requires-Dist: requests>=2.28.0
|
|
21
|
+
Requires-Dist: rich>=13.0.0
|
|
22
|
+
|
|
23
|
+
# LOCKTHARD CLI (`lockthard`)
|
|
24
|
+
|
|
25
|
+
A super efficient, scriptable command-line interface and AI agent client for **LOCKTHARD** (https://lockthard.es).
|
|
26
|
+
|
|
27
|
+
Allows both human developers and autonomous AI agents (Claude Code, Antigravity, Aider, Cursor, etc.) to query, search, and inspect 61+ tablets and 1200+ AI tools with minimum token usage and zero prompt overhead.
|
|
28
|
+
|
|
29
|
+
## Installation
|
|
30
|
+
|
|
31
|
+
```bash
|
|
32
|
+
pip install lockthard-cli
|
|
33
|
+
```
|
|
34
|
+
|
|
35
|
+
Or run without installing:
|
|
36
|
+
|
|
37
|
+
```bash
|
|
38
|
+
pipx run lockthard-cli --help
|
|
39
|
+
```
|
|
40
|
+
|
|
41
|
+
## Quick Start
|
|
42
|
+
|
|
43
|
+
### 1. Authentication
|
|
44
|
+
Get your API key from [lockthard.es](https://lockthard.es).
|
|
45
|
+
|
|
46
|
+
- **For AI Agents & CI/CD:**
|
|
47
|
+
```bash
|
|
48
|
+
export LOCKTHARD_API_KEY="lk_your_token_here"
|
|
49
|
+
```
|
|
50
|
+
- **Interactive Browser Login (Humans):**
|
|
51
|
+
```bash
|
|
52
|
+
lockthard login
|
|
53
|
+
```
|
|
54
|
+
- **Manual Login:**
|
|
55
|
+
```bash
|
|
56
|
+
lockthard login --token "lk_your_token_here"
|
|
57
|
+
```
|
|
58
|
+
|
|
59
|
+
### 2. Commands
|
|
60
|
+
|
|
61
|
+
```bash
|
|
62
|
+
# Ping service
|
|
63
|
+
lockthard ping
|
|
64
|
+
|
|
65
|
+
# Search tools (returns concise ASCII table)
|
|
66
|
+
lockthard search "ocr"
|
|
67
|
+
|
|
68
|
+
# Search tools in raw JSON (for agents / jq)
|
|
69
|
+
lockthard search "ocr" --json
|
|
70
|
+
|
|
71
|
+
# List all tablets
|
|
72
|
+
lockthard tablets list
|
|
73
|
+
|
|
74
|
+
# Inspect a specific tablet
|
|
75
|
+
lockthard tablets get ocr
|
|
76
|
+
|
|
77
|
+
# Inspect tool details
|
|
78
|
+
lockthard tools get "Chandra OCR"
|
|
79
|
+
|
|
80
|
+
# Display CLI agent guide
|
|
81
|
+
lockthard guide
|
|
82
|
+
```
|
|
83
|
+
|
|
84
|
+
## Options
|
|
85
|
+
|
|
86
|
+
- `--json` / `-j`: Output raw JSON without Rich styling.
|
|
87
|
+
- `--url` / `-u`: Override base server URL (default: `https://lockthard.es`).
|
|
88
|
+
- `--token` / `-t`: Override API token.
|
|
89
|
+
|
|
90
|
+
## License
|
|
91
|
+
|
|
92
|
+
MIT License
|
|
@@ -1,4 +1,6 @@
|
|
|
1
|
+
import json
|
|
1
2
|
import sys
|
|
3
|
+
from pathlib import Path
|
|
2
4
|
from typing import Optional
|
|
3
5
|
import click
|
|
4
6
|
|
|
@@ -15,8 +17,10 @@ from .formatters import (
|
|
|
15
17
|
print_tool_details,
|
|
16
18
|
print_cli_tools,
|
|
17
19
|
print_agent_guide,
|
|
18
|
-
|
|
20
|
+
HAS_RICH,
|
|
21
|
+
console,
|
|
19
22
|
)
|
|
23
|
+
from rich.markdown import Markdown
|
|
20
24
|
|
|
21
25
|
|
|
22
26
|
def _handle_error(err: Exception):
|
|
@@ -25,6 +29,11 @@ def _handle_error(err: Exception):
|
|
|
25
29
|
sys.exit(1)
|
|
26
30
|
|
|
27
31
|
|
|
32
|
+
def _get_as_json(ctx: click.Context, local_flag: bool) -> bool:
|
|
33
|
+
"""Merge global --json with local subcommand --json flag."""
|
|
34
|
+
return ctx.obj.get("as_json", False) or local_flag
|
|
35
|
+
|
|
36
|
+
|
|
28
37
|
@click.group(invoke_without_command=False)
|
|
29
38
|
@click.option("--url", "-u", default=None, help="Base URL del servidor LOCKTHARD (default: https://lockthard.es).")
|
|
30
39
|
@click.option("--token", "-t", default=None, help="API Key / Token de autenticación (lk_...).")
|
|
@@ -44,13 +53,16 @@ def cli(ctx: click.Context, url: Optional[str], token: Optional[str], as_json: b
|
|
|
44
53
|
|
|
45
54
|
|
|
46
55
|
@cli.command()
|
|
56
|
+
@click.option("--json", "-j", "as_json_local", is_flag=True, default=False,
|
|
57
|
+
help="Salida en JSON bruto (ideal para scripts y agentes).")
|
|
47
58
|
@click.pass_context
|
|
48
|
-
def ping(ctx: click.Context):
|
|
59
|
+
def ping(ctx: click.Context, as_json_local: bool):
|
|
49
60
|
"""Verifica la conectividad con el servidor de LOCKTHARD y el estado del token."""
|
|
50
61
|
client: LockthardClient = ctx.obj["client"]
|
|
62
|
+
as_json = _get_as_json(ctx, as_json_local)
|
|
51
63
|
try:
|
|
52
64
|
res = client.ping()
|
|
53
|
-
print_ping_result(res, as_json=
|
|
65
|
+
print_ping_result(res, as_json=as_json)
|
|
54
66
|
except LockthardError as e:
|
|
55
67
|
_handle_error(e)
|
|
56
68
|
|
|
@@ -98,16 +110,19 @@ def logout():
|
|
|
98
110
|
|
|
99
111
|
|
|
100
112
|
@cli.command()
|
|
113
|
+
@click.option("--json", "-j", "as_json_local", is_flag=True, default=False,
|
|
114
|
+
help="Salida en JSON bruto (ideal para scripts y agentes).")
|
|
101
115
|
@click.argument("query")
|
|
102
116
|
@click.option("--tablet", "-t", help="Filtrar por ID de tablet específica.")
|
|
103
117
|
@click.option("--limit", "-l", default=20, type=int, help="Límite de resultados (default: 20).")
|
|
104
118
|
@click.pass_context
|
|
105
|
-
def search(ctx: click.Context, query: str, tablet: Optional[str], limit: int):
|
|
119
|
+
def search(ctx: click.Context, as_json_local: bool, query: str, tablet: Optional[str], limit: int):
|
|
106
120
|
"""Busca herramientas por palabra clave en LOCKTHARD."""
|
|
107
121
|
client: LockthardClient = ctx.obj["client"]
|
|
122
|
+
as_json = _get_as_json(ctx, as_json_local)
|
|
108
123
|
try:
|
|
109
124
|
results = client.search_tools(query=query, tablet_id=tablet, limit=limit)
|
|
110
|
-
print_search_results(query, results, as_json=
|
|
125
|
+
print_search_results(query, results, as_json=as_json)
|
|
111
126
|
except LockthardError as e:
|
|
112
127
|
_handle_error(e)
|
|
113
128
|
|
|
@@ -119,28 +134,34 @@ def tablets():
|
|
|
119
134
|
|
|
120
135
|
|
|
121
136
|
@tablets.command(name="list")
|
|
137
|
+
@click.option("--json", "-j", "as_json_local", is_flag=True, default=False,
|
|
138
|
+
help="Salida en JSON bruto (ideal para scripts y agentes).")
|
|
122
139
|
@click.option("--query", "-q", help="Filtrar tablets por título o categoría.")
|
|
123
140
|
@click.pass_context
|
|
124
|
-
def list_tablets_cmd(ctx: click.Context, query: Optional[str]):
|
|
141
|
+
def list_tablets_cmd(ctx: click.Context, as_json_local: bool, query: Optional[str]):
|
|
125
142
|
"""Lista los 61+ tablets y categorías disponibles."""
|
|
126
143
|
client: LockthardClient = ctx.obj["client"]
|
|
144
|
+
as_json = _get_as_json(ctx, as_json_local)
|
|
127
145
|
try:
|
|
128
146
|
res = client.list_tablets(query=query)
|
|
129
|
-
print_tablets_list(res, as_json=
|
|
147
|
+
print_tablets_list(res, as_json=as_json)
|
|
130
148
|
except LockthardError as e:
|
|
131
149
|
_handle_error(e)
|
|
132
150
|
|
|
133
151
|
|
|
134
152
|
@tablets.command(name="get")
|
|
153
|
+
@click.option("--json", "-j", "as_json_local", is_flag=True, default=False,
|
|
154
|
+
help="Salida en JSON bruto (ideal para scripts y agentes).")
|
|
135
155
|
@click.argument("tablet_id")
|
|
136
156
|
@click.option("--limit", "-l", type=int, help="Límite de herramientas a devolver.")
|
|
137
157
|
@click.pass_context
|
|
138
|
-
def get_tablet_cmd(ctx: click.Context, tablet_id: str, limit: Optional[int]):
|
|
158
|
+
def get_tablet_cmd(ctx: click.Context, as_json_local: bool, tablet_id: str, limit: Optional[int]):
|
|
139
159
|
"""Obtiene el contenido completo de un tablet por su ID (ej. ocr, open-source)."""
|
|
140
160
|
client: LockthardClient = ctx.obj["client"]
|
|
161
|
+
as_json = _get_as_json(ctx, as_json_local)
|
|
141
162
|
try:
|
|
142
163
|
res = client.get_tablet(tablet_id=tablet_id, limit=limit)
|
|
143
|
-
print_tablet_content(res, as_json=
|
|
164
|
+
print_tablet_content(res, as_json=as_json)
|
|
144
165
|
except LockthardError as e:
|
|
145
166
|
_handle_error(e)
|
|
146
167
|
|
|
@@ -152,26 +173,32 @@ def tools():
|
|
|
152
173
|
|
|
153
174
|
|
|
154
175
|
@tools.command(name="get")
|
|
176
|
+
@click.option("--json", "-j", "as_json_local", is_flag=True, default=False,
|
|
177
|
+
help="Salida en JSON bruto (ideal para scripts y agentes).")
|
|
155
178
|
@click.argument("tool_id")
|
|
156
179
|
@click.pass_context
|
|
157
|
-
def get_tool_cmd(ctx: click.Context, tool_id: str):
|
|
180
|
+
def get_tool_cmd(ctx: click.Context, as_json_local: bool, tool_id: str):
|
|
158
181
|
"""Obtiene los detalles y comandos recomendados de una herramienta específica."""
|
|
159
182
|
client: LockthardClient = ctx.obj["client"]
|
|
183
|
+
as_json = _get_as_json(ctx, as_json_local)
|
|
160
184
|
try:
|
|
161
185
|
res = client.get_tool_details(tool_id=tool_id)
|
|
162
|
-
print_tool_details(res, as_json=
|
|
186
|
+
print_tool_details(res, as_json=as_json)
|
|
163
187
|
except LockthardError as e:
|
|
164
188
|
_handle_error(e)
|
|
165
189
|
|
|
166
190
|
|
|
167
191
|
@cli.command(name="cli-tools")
|
|
192
|
+
@click.option("--json", "-j", "as_json_local", is_flag=True, default=False,
|
|
193
|
+
help="Salida en JSON bruto (ideal para scripts y agentes).")
|
|
168
194
|
@click.pass_context
|
|
169
|
-
def cli_tools_cmd(ctx: click.Context):
|
|
195
|
+
def cli_tools_cmd(ctx: click.Context, as_json_local: bool):
|
|
170
196
|
"""Lista las herramientas especializadas de línea de comandos en LOCKTHARD."""
|
|
171
197
|
client: LockthardClient = ctx.obj["client"]
|
|
198
|
+
as_json = _get_as_json(ctx, as_json_local)
|
|
172
199
|
try:
|
|
173
200
|
res = client.get_cli_tools()
|
|
174
|
-
print_cli_tools(res, as_json=
|
|
201
|
+
print_cli_tools(res, as_json=as_json)
|
|
175
202
|
except LockthardError as e:
|
|
176
203
|
_handle_error(e)
|
|
177
204
|
|
|
@@ -183,9 +210,33 @@ def guide():
|
|
|
183
210
|
|
|
184
211
|
|
|
185
212
|
@cli.command()
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
213
|
+
@click.pass_context
|
|
214
|
+
def skill(ctx: click.Context):
|
|
215
|
+
"""Muestra la SKILL.md integrada del paquete para que un Agente de IA la importe."""
|
|
216
|
+
import importlib.resources
|
|
217
|
+
try:
|
|
218
|
+
# Try to read SKILL.md bundled with the package
|
|
219
|
+
pkg_dir = Path(__file__).parent.parent
|
|
220
|
+
skill_path = pkg_dir / "SKILL.md"
|
|
221
|
+
if not skill_path.exists():
|
|
222
|
+
# Fallback: try importlib.resources
|
|
223
|
+
try:
|
|
224
|
+
ref = importlib.resources.files("lockthard_cli").parent.joinpath("SKILL.md")
|
|
225
|
+
content = ref.read_text(encoding="utf-8")
|
|
226
|
+
except Exception:
|
|
227
|
+
raise FileNotFoundError("SKILL.md no encontrada en el paquete.")
|
|
228
|
+
else:
|
|
229
|
+
content = skill_path.read_text(encoding="utf-8")
|
|
230
|
+
|
|
231
|
+
if ctx.obj.get("as_json"):
|
|
232
|
+
print(json.dumps({"skill": content}, ensure_ascii=False))
|
|
233
|
+
else:
|
|
234
|
+
if HAS_RICH and console:
|
|
235
|
+
console.print(Markdown(content))
|
|
236
|
+
else:
|
|
237
|
+
print(content)
|
|
238
|
+
except Exception as e:
|
|
239
|
+
_handle_error(LockthardError(f"No se pudo leer SKILL.md: {e}"))
|
|
189
240
|
|
|
190
241
|
|
|
191
242
|
def main():
|
|
@@ -247,45 +247,5 @@ Bienvenido a la CLI de **LOCKTHARD**. Esta interfaz permite a Agentes de IA (Cla
|
|
|
247
247
|
print(guide_md)
|
|
248
248
|
|
|
249
249
|
|
|
250
|
-
|
|
251
|
-
skill_content = """---
|
|
252
|
-
name: lockthard
|
|
253
|
-
description: "Scriptable CLI and AI agent client for LOCKTHARD (lockthard.es). Allows searching 2100+ AI tools, exploring 81+ tablets, retrieving tool installation commands, and inspecting tool details with minimum token overhead."
|
|
254
|
-
version: 0.1.0
|
|
255
|
-
---
|
|
256
|
-
|
|
257
|
-
# LOCKTHARD CLI - Agent Skill Guide
|
|
258
|
-
|
|
259
|
-
Use this CLI to query the LOCKTHARD AI tools directory, find specific tools, get installation/setup commands, and browse tablets.
|
|
260
|
-
|
|
261
|
-
## Authentication
|
|
262
|
-
Set the environment variable `LOCKTHARD_API_KEY`:
|
|
263
|
-
```bash
|
|
264
|
-
export LOCKTHARD_API_KEY="lk_your_token"
|
|
265
|
-
```
|
|
266
|
-
|
|
267
|
-
## Recommended Workflow for AI Agents
|
|
268
|
-
Always use the `--json` (`-j`) flag to receive clean JSON output.
|
|
269
|
-
|
|
270
|
-
1. **Verify status:** `lockthard ping`
|
|
271
|
-
2. **Search tools:** `lockthard search "ocr" --json`
|
|
272
|
-
3. **List all tablets:** `lockthard tablets list --json`
|
|
273
|
-
4. **Get tablet tools:** `lockthard tablets get ocr --json`
|
|
274
|
-
5. **Get tool details:** `lockthard tools get "Chandra OCR" --json`
|
|
275
|
-
6. **List CLI tools:** `lockthard cli-tools --json`
|
|
276
|
-
|
|
277
|
-
## Commands Reference
|
|
278
|
-
|
|
279
|
-
| Command | Description | Example |
|
|
280
|
-
|---|---|---|
|
|
281
|
-
| `lockthard ping` | Check connection & auth status | `lockthard ping` |
|
|
282
|
-
| `lockthard search <query>` | Search 2100+ tools | `lockthard search "ocr" -j` |
|
|
283
|
-
| `lockthard tablets list` | List 81+ tablets | `lockthard tablets list -j` |
|
|
284
|
-
| `lockthard tablets get <id>` | Inspect tablet content | `lockthard tablets get open-source -j` |
|
|
285
|
-
| `lockthard tools get <id>` | Detailed tool info & CLI commands | `lockthard tools get "copilotkit" -j` |
|
|
286
|
-
| `lockthard cli-tools` | List dedicated CLI tools | `lockthard cli-tools -j` |
|
|
287
|
-
| `lockthard guide` | Show agent guide | `lockthard guide` |
|
|
288
|
-
| `lockthard skill` | Output this SKILL.md definition | `lockthard skill` |
|
|
289
|
-
"""
|
|
290
|
-
print(skill_content)
|
|
250
|
+
|
|
291
251
|
|
|
@@ -1,92 +1,92 @@
|
|
|
1
|
-
Metadata-Version: 2.4
|
|
2
|
-
Name: lockthard-cli
|
|
3
|
-
Version: 0.1
|
|
4
|
-
Summary:
|
|
5
|
-
Author-email: Lockthard Team <info@lockthard.es>
|
|
6
|
-
License: MIT
|
|
7
|
-
Project-URL: Homepage, https://lockthard.es
|
|
8
|
-
Keywords: cli,ai-tools,agents,mcp,lockthard
|
|
9
|
-
Classifier: Development Status :: 4 - Beta
|
|
10
|
-
Classifier: Environment :: Console
|
|
11
|
-
Classifier: Intended Audience :: Developers
|
|
12
|
-
Classifier: Programming Language :: Python :: 3
|
|
13
|
-
Classifier: Programming Language :: Python :: 3.10
|
|
14
|
-
Classifier: Programming Language :: Python :: 3.11
|
|
15
|
-
Classifier: Programming Language :: Python :: 3.12
|
|
16
|
-
Classifier: Topic :: Utilities
|
|
17
|
-
Requires-Python: >=3.10
|
|
18
|
-
Description-Content-Type: text/markdown
|
|
19
|
-
Requires-Dist: click>=8.1.0
|
|
20
|
-
Requires-Dist: requests>=2.28.0
|
|
21
|
-
Requires-Dist: rich>=13.0.0
|
|
22
|
-
|
|
23
|
-
# LOCKTHARD CLI (`lockthard`)
|
|
24
|
-
|
|
25
|
-
A super efficient, scriptable command-line interface and AI agent client for **LOCKTHARD** (https://lockthard.es).
|
|
26
|
-
|
|
27
|
-
Allows both human developers and autonomous AI agents (Claude Code, Antigravity, Aider, Cursor, etc.) to query, search, and inspect 61+ tablets and 1200+ AI tools with minimum token usage and zero prompt overhead.
|
|
28
|
-
|
|
29
|
-
## Installation
|
|
30
|
-
|
|
31
|
-
```bash
|
|
32
|
-
pip install lockthard-cli
|
|
33
|
-
```
|
|
34
|
-
|
|
35
|
-
Or run without installing:
|
|
36
|
-
|
|
37
|
-
```bash
|
|
38
|
-
pipx run lockthard-cli --help
|
|
39
|
-
```
|
|
40
|
-
|
|
41
|
-
## Quick Start
|
|
42
|
-
|
|
43
|
-
### 1. Authentication
|
|
44
|
-
Get your API key from [lockthard.es](https://lockthard.es).
|
|
45
|
-
|
|
46
|
-
- **For AI Agents & CI/CD:**
|
|
47
|
-
```bash
|
|
48
|
-
export LOCKTHARD_API_KEY="lk_your_token_here"
|
|
49
|
-
```
|
|
50
|
-
- **Interactive Browser Login (Humans):**
|
|
51
|
-
```bash
|
|
52
|
-
lockthard login
|
|
53
|
-
```
|
|
54
|
-
- **Manual Login:**
|
|
55
|
-
```bash
|
|
56
|
-
lockthard login --token "lk_your_token_here"
|
|
57
|
-
```
|
|
58
|
-
|
|
59
|
-
### 2. Commands
|
|
60
|
-
|
|
61
|
-
```bash
|
|
62
|
-
# Ping service
|
|
63
|
-
lockthard ping
|
|
64
|
-
|
|
65
|
-
# Search tools (returns concise ASCII table)
|
|
66
|
-
lockthard search "ocr"
|
|
67
|
-
|
|
68
|
-
# Search tools in raw JSON (for agents / jq)
|
|
69
|
-
lockthard search "ocr" --json
|
|
70
|
-
|
|
71
|
-
# List all tablets
|
|
72
|
-
lockthard tablets list
|
|
73
|
-
|
|
74
|
-
# Inspect a specific tablet
|
|
75
|
-
lockthard tablets get ocr
|
|
76
|
-
|
|
77
|
-
# Inspect tool details
|
|
78
|
-
lockthard tools get "Chandra OCR"
|
|
79
|
-
|
|
80
|
-
# Display CLI agent guide
|
|
81
|
-
lockthard guide
|
|
82
|
-
```
|
|
83
|
-
|
|
84
|
-
## Options
|
|
85
|
-
|
|
86
|
-
- `--json` / `-j`: Output raw JSON without Rich styling.
|
|
87
|
-
- `--url` / `-u`: Override base server URL (default: `https://lockthard.es`).
|
|
88
|
-
- `--token` / `-t`: Override API token.
|
|
89
|
-
|
|
90
|
-
## License
|
|
91
|
-
|
|
92
|
-
MIT License
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: lockthard-cli
|
|
3
|
+
Version: 0.2.1
|
|
4
|
+
Summary: CLI and AI agent client for LOCKTHARD — query 2100+ curated AI tools across 86+ tablets
|
|
5
|
+
Author-email: Lockthard Team <info@lockthard.es>
|
|
6
|
+
License: MIT
|
|
7
|
+
Project-URL: Homepage, https://lockthard.es
|
|
8
|
+
Keywords: cli,ai-tools,agents,mcp,lockthard
|
|
9
|
+
Classifier: Development Status :: 4 - Beta
|
|
10
|
+
Classifier: Environment :: Console
|
|
11
|
+
Classifier: Intended Audience :: Developers
|
|
12
|
+
Classifier: Programming Language :: Python :: 3
|
|
13
|
+
Classifier: Programming Language :: Python :: 3.10
|
|
14
|
+
Classifier: Programming Language :: Python :: 3.11
|
|
15
|
+
Classifier: Programming Language :: Python :: 3.12
|
|
16
|
+
Classifier: Topic :: Utilities
|
|
17
|
+
Requires-Python: >=3.10
|
|
18
|
+
Description-Content-Type: text/markdown
|
|
19
|
+
Requires-Dist: click>=8.1.0
|
|
20
|
+
Requires-Dist: requests>=2.28.0
|
|
21
|
+
Requires-Dist: rich>=13.0.0
|
|
22
|
+
|
|
23
|
+
# LOCKTHARD CLI (`lockthard`)
|
|
24
|
+
|
|
25
|
+
A super efficient, scriptable command-line interface and AI agent client for **LOCKTHARD** (https://lockthard.es).
|
|
26
|
+
|
|
27
|
+
Allows both human developers and autonomous AI agents (Claude Code, Antigravity, Aider, Cursor, etc.) to query, search, and inspect 61+ tablets and 1200+ AI tools with minimum token usage and zero prompt overhead.
|
|
28
|
+
|
|
29
|
+
## Installation
|
|
30
|
+
|
|
31
|
+
```bash
|
|
32
|
+
pip install lockthard-cli
|
|
33
|
+
```
|
|
34
|
+
|
|
35
|
+
Or run without installing:
|
|
36
|
+
|
|
37
|
+
```bash
|
|
38
|
+
pipx run lockthard-cli --help
|
|
39
|
+
```
|
|
40
|
+
|
|
41
|
+
## Quick Start
|
|
42
|
+
|
|
43
|
+
### 1. Authentication
|
|
44
|
+
Get your API key from [lockthard.es](https://lockthard.es).
|
|
45
|
+
|
|
46
|
+
- **For AI Agents & CI/CD:**
|
|
47
|
+
```bash
|
|
48
|
+
export LOCKTHARD_API_KEY="lk_your_token_here"
|
|
49
|
+
```
|
|
50
|
+
- **Interactive Browser Login (Humans):**
|
|
51
|
+
```bash
|
|
52
|
+
lockthard login
|
|
53
|
+
```
|
|
54
|
+
- **Manual Login:**
|
|
55
|
+
```bash
|
|
56
|
+
lockthard login --token "lk_your_token_here"
|
|
57
|
+
```
|
|
58
|
+
|
|
59
|
+
### 2. Commands
|
|
60
|
+
|
|
61
|
+
```bash
|
|
62
|
+
# Ping service
|
|
63
|
+
lockthard ping
|
|
64
|
+
|
|
65
|
+
# Search tools (returns concise ASCII table)
|
|
66
|
+
lockthard search "ocr"
|
|
67
|
+
|
|
68
|
+
# Search tools in raw JSON (for agents / jq)
|
|
69
|
+
lockthard search "ocr" --json
|
|
70
|
+
|
|
71
|
+
# List all tablets
|
|
72
|
+
lockthard tablets list
|
|
73
|
+
|
|
74
|
+
# Inspect a specific tablet
|
|
75
|
+
lockthard tablets get ocr
|
|
76
|
+
|
|
77
|
+
# Inspect tool details
|
|
78
|
+
lockthard tools get "Chandra OCR"
|
|
79
|
+
|
|
80
|
+
# Display CLI agent guide
|
|
81
|
+
lockthard guide
|
|
82
|
+
```
|
|
83
|
+
|
|
84
|
+
## Options
|
|
85
|
+
|
|
86
|
+
- `--json` / `-j`: Output raw JSON without Rich styling.
|
|
87
|
+
- `--url` / `-u`: Override base server URL (default: `https://lockthard.es`).
|
|
88
|
+
- `--token` / `-t`: Override API token.
|
|
89
|
+
|
|
90
|
+
## License
|
|
91
|
+
|
|
92
|
+
MIT License
|
|
@@ -4,8 +4,8 @@ build-backend = "setuptools.build_meta"
|
|
|
4
4
|
|
|
5
5
|
[project]
|
|
6
6
|
name = "lockthard-cli"
|
|
7
|
-
version = "0.1
|
|
8
|
-
description = "
|
|
7
|
+
version = "0.2.1"
|
|
8
|
+
description = "CLI and AI agent client for LOCKTHARD — query 2100+ curated AI tools across 86+ tablets"
|
|
9
9
|
readme = "README.md"
|
|
10
10
|
license = { text = "MIT" }
|
|
11
11
|
requires-python = ">=3.10"
|
|
@@ -37,3 +37,6 @@ lockthard = "lockthard_cli.cli:main"
|
|
|
37
37
|
|
|
38
38
|
[tool.setuptools.packages.find]
|
|
39
39
|
where = ["."]
|
|
40
|
+
|
|
41
|
+
[tool.setuptools.package-data]
|
|
42
|
+
"*" = ["SKILL.md"]
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
[egg_info]
|
|
2
|
-
tag_build =
|
|
3
|
-
tag_date = 0
|
|
4
|
-
|
|
1
|
+
[egg_info]
|
|
2
|
+
tag_build =
|
|
3
|
+
tag_date = 0
|
|
4
|
+
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|