lockthard-cli 0.1.3__tar.gz → 0.2.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.
@@ -1,92 +1,92 @@
1
- Metadata-Version: 2.4
2
- Name: lockthard-cli
3
- Version: 0.1.3
4
- Summary: Super efficient CLI for LOCKTHARD AI tools directory and agents
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.0
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
@@ -2,4 +2,4 @@
2
2
  LOCKTHARD CLI - Command Line Interface and Agent Client for LOCKTHARD.
3
3
  """
4
4
 
5
- __version__ = "0.1.3"
5
+ __version__ = "0.2.0"
@@ -15,7 +15,6 @@ from .formatters import (
15
15
  print_tool_details,
16
16
  print_cli_tools,
17
17
  print_agent_guide,
18
- print_agent_skill
19
18
  )
20
19
 
21
20
 
@@ -25,6 +24,11 @@ def _handle_error(err: Exception):
25
24
  sys.exit(1)
26
25
 
27
26
 
27
+ def _get_as_json(ctx: click.Context, local_flag: bool) -> bool:
28
+ """Merge global --json with local subcommand --json flag."""
29
+ return ctx.obj.get("as_json", False) or local_flag
30
+
31
+
28
32
  @click.group(invoke_without_command=False)
29
33
  @click.option("--url", "-u", default=None, help="Base URL del servidor LOCKTHARD (default: https://lockthard.es).")
30
34
  @click.option("--token", "-t", default=None, help="API Key / Token de autenticación (lk_...).")
@@ -44,13 +48,16 @@ def cli(ctx: click.Context, url: Optional[str], token: Optional[str], as_json: b
44
48
 
45
49
 
46
50
  @cli.command()
51
+ @click.option("--json", "-j", "as_json_local", is_flag=True, default=False,
52
+ help="Salida en JSON bruto (ideal para scripts y agentes).")
47
53
  @click.pass_context
48
- def ping(ctx: click.Context):
54
+ def ping(ctx: click.Context, as_json_local: bool):
49
55
  """Verifica la conectividad con el servidor de LOCKTHARD y el estado del token."""
50
56
  client: LockthardClient = ctx.obj["client"]
57
+ as_json = _get_as_json(ctx, as_json_local)
51
58
  try:
52
59
  res = client.ping()
53
- print_ping_result(res, as_json=ctx.obj["as_json"])
60
+ print_ping_result(res, as_json=as_json)
54
61
  except LockthardError as e:
55
62
  _handle_error(e)
56
63
 
@@ -98,16 +105,19 @@ def logout():
98
105
 
99
106
 
100
107
  @cli.command()
108
+ @click.option("--json", "-j", "as_json_local", is_flag=True, default=False,
109
+ help="Salida en JSON bruto (ideal para scripts y agentes).")
101
110
  @click.argument("query")
102
111
  @click.option("--tablet", "-t", help="Filtrar por ID de tablet específica.")
103
112
  @click.option("--limit", "-l", default=20, type=int, help="Límite de resultados (default: 20).")
104
113
  @click.pass_context
105
- def search(ctx: click.Context, query: str, tablet: Optional[str], limit: int):
114
+ def search(ctx: click.Context, as_json_local: bool, query: str, tablet: Optional[str], limit: int):
106
115
  """Busca herramientas por palabra clave en LOCKTHARD."""
107
116
  client: LockthardClient = ctx.obj["client"]
117
+ as_json = _get_as_json(ctx, as_json_local)
108
118
  try:
109
119
  results = client.search_tools(query=query, tablet_id=tablet, limit=limit)
110
- print_search_results(query, results, as_json=ctx.obj["as_json"])
120
+ print_search_results(query, results, as_json=as_json)
111
121
  except LockthardError as e:
112
122
  _handle_error(e)
113
123
 
@@ -119,28 +129,34 @@ def tablets():
119
129
 
120
130
 
121
131
  @tablets.command(name="list")
132
+ @click.option("--json", "-j", "as_json_local", is_flag=True, default=False,
133
+ help="Salida en JSON bruto (ideal para scripts y agentes).")
122
134
  @click.option("--query", "-q", help="Filtrar tablets por título o categoría.")
123
135
  @click.pass_context
124
- def list_tablets_cmd(ctx: click.Context, query: Optional[str]):
136
+ def list_tablets_cmd(ctx: click.Context, as_json_local: bool, query: Optional[str]):
125
137
  """Lista los 61+ tablets y categorías disponibles."""
126
138
  client: LockthardClient = ctx.obj["client"]
139
+ as_json = _get_as_json(ctx, as_json_local)
127
140
  try:
128
141
  res = client.list_tablets(query=query)
129
- print_tablets_list(res, as_json=ctx.obj["as_json"])
142
+ print_tablets_list(res, as_json=as_json)
130
143
  except LockthardError as e:
131
144
  _handle_error(e)
132
145
 
133
146
 
134
147
  @tablets.command(name="get")
148
+ @click.option("--json", "-j", "as_json_local", is_flag=True, default=False,
149
+ help="Salida en JSON bruto (ideal para scripts y agentes).")
135
150
  @click.argument("tablet_id")
136
151
  @click.option("--limit", "-l", type=int, help="Límite de herramientas a devolver.")
137
152
  @click.pass_context
138
- def get_tablet_cmd(ctx: click.Context, tablet_id: str, limit: Optional[int]):
153
+ def get_tablet_cmd(ctx: click.Context, as_json_local: bool, tablet_id: str, limit: Optional[int]):
139
154
  """Obtiene el contenido completo de un tablet por su ID (ej. ocr, open-source)."""
140
155
  client: LockthardClient = ctx.obj["client"]
156
+ as_json = _get_as_json(ctx, as_json_local)
141
157
  try:
142
158
  res = client.get_tablet(tablet_id=tablet_id, limit=limit)
143
- print_tablet_content(res, as_json=ctx.obj["as_json"])
159
+ print_tablet_content(res, as_json=as_json)
144
160
  except LockthardError as e:
145
161
  _handle_error(e)
146
162
 
@@ -152,26 +168,32 @@ def tools():
152
168
 
153
169
 
154
170
  @tools.command(name="get")
171
+ @click.option("--json", "-j", "as_json_local", is_flag=True, default=False,
172
+ help="Salida en JSON bruto (ideal para scripts y agentes).")
155
173
  @click.argument("tool_id")
156
174
  @click.pass_context
157
- def get_tool_cmd(ctx: click.Context, tool_id: str):
175
+ def get_tool_cmd(ctx: click.Context, as_json_local: bool, tool_id: str):
158
176
  """Obtiene los detalles y comandos recomendados de una herramienta específica."""
159
177
  client: LockthardClient = ctx.obj["client"]
178
+ as_json = _get_as_json(ctx, as_json_local)
160
179
  try:
161
180
  res = client.get_tool_details(tool_id=tool_id)
162
- print_tool_details(res, as_json=ctx.obj["as_json"])
181
+ print_tool_details(res, as_json=as_json)
163
182
  except LockthardError as e:
164
183
  _handle_error(e)
165
184
 
166
185
 
167
186
  @cli.command(name="cli-tools")
187
+ @click.option("--json", "-j", "as_json_local", is_flag=True, default=False,
188
+ help="Salida en JSON bruto (ideal para scripts y agentes).")
168
189
  @click.pass_context
169
- def cli_tools_cmd(ctx: click.Context):
190
+ def cli_tools_cmd(ctx: click.Context, as_json_local: bool):
170
191
  """Lista las herramientas especializadas de línea de comandos en LOCKTHARD."""
171
192
  client: LockthardClient = ctx.obj["client"]
193
+ as_json = _get_as_json(ctx, as_json_local)
172
194
  try:
173
195
  res = client.get_cli_tools()
174
- print_cli_tools(res, as_json=ctx.obj["as_json"])
196
+ print_cli_tools(res, as_json=as_json)
175
197
  except LockthardError as e:
176
198
  _handle_error(e)
177
199
 
@@ -182,12 +204,6 @@ def guide():
182
204
  print_agent_guide()
183
205
 
184
206
 
185
- @cli.command()
186
- def skill():
187
- """Genera la especificación SKILL.md completa para que un Agente de IA la importe."""
188
- print_agent_skill()
189
-
190
-
191
207
  def main():
192
208
  cli(obj={})
193
209
 
@@ -127,22 +127,36 @@ def print_tablet_content(tablet_data: Dict[str, Any], as_json: bool = False):
127
127
  console.print(Panel(f"[bold white]{title}[/bold white]\n[dim]{tablet_data.get('description', '')}[/dim]", border_style="cyan"))
128
128
 
129
129
  if items:
130
- table = Table(title=f"Herramientas en {title} ({len(items)})", show_header=True)
131
- table.add_column("Nombre", style="bold green")
132
- table.add_column("Descripción", style="white")
133
- table.add_column("Enlace", style="blue")
134
-
130
+ # Group items by section
131
+ sections: Dict[str, List[Dict[str, Any]]] = {}
135
132
  for item in items:
136
- desc = item.get("description") or item.get("desc") or ""
137
- url = item.get("url") or item.get("href") or item.get("repo") or "-"
138
- table.add_row(str(item.get("name") or "-"), desc, str(url))
139
- console.print(table)
133
+ sec_name = item.get("section") or "General"
134
+ sections.setdefault(sec_name, []).append(item)
135
+
136
+ for sec_title, sec_items in sections.items():
137
+ section_header = f"📁 {sec_title}" if sec_title != "General" else f"🛠️ Herramientas ({len(sec_items)})"
138
+ table = Table(title=section_header, show_header=True, header_style="bold yellow")
139
+ table.add_column("Nombre", style="bold green")
140
+ table.add_column("Descripción", style="white")
141
+ table.add_column("Enlace", style="blue")
142
+
143
+ for item in sec_items:
144
+ desc = item.get("description") or item.get("desc") or ""
145
+ url = item.get("url") or item.get("href") or item.get("repo") or "-"
146
+ table.add_row(str(item.get("name") or "-"), desc, str(url))
147
+ console.print(table)
140
148
  else:
141
149
  console.print("[yellow]No hay herramientas registradas en esta tablet.[/yellow]")
142
150
  else:
143
151
  print(f"=== {title} ===")
152
+ sections: Dict[str, List[Dict[str, Any]]] = {}
144
153
  for item in items:
145
- print(f"- {item.get('name')}: {item.get('url')}")
154
+ sec_name = item.get("section") or "General"
155
+ sections.setdefault(sec_name, []).append(item)
156
+ for sec_title, sec_items in sections.items():
157
+ print(f"\n--- {sec_title} ---")
158
+ for item in sec_items:
159
+ print(f"- {item.get('name')}: {item.get('url')}")
146
160
 
147
161
 
148
162
  def print_tool_details(tool: Dict[str, Any], as_json: bool = False):
@@ -233,45 +247,5 @@ Bienvenido a la CLI de **LOCKTHARD**. Esta interfaz permite a Agentes de IA (Cla
233
247
  print(guide_md)
234
248
 
235
249
 
236
- def print_agent_skill():
237
- skill_content = """---
238
- name: lockthard
239
- 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."
240
- version: 0.1.0
241
- ---
242
-
243
- # LOCKTHARD CLI - Agent Skill Guide
244
-
245
- Use this CLI to query the LOCKTHARD AI tools directory, find specific tools, get installation/setup commands, and browse tablets.
246
-
247
- ## Authentication
248
- Set the environment variable `LOCKTHARD_API_KEY`:
249
- ```bash
250
- export LOCKTHARD_API_KEY="lk_your_token"
251
- ```
252
-
253
- ## Recommended Workflow for AI Agents
254
- Always use the `--json` (`-j`) flag to receive clean JSON output.
255
-
256
- 1. **Verify status:** `lockthard ping`
257
- 2. **Search tools:** `lockthard search "ocr" --json`
258
- 3. **List all tablets:** `lockthard tablets list --json`
259
- 4. **Get tablet tools:** `lockthard tablets get ocr --json`
260
- 5. **Get tool details:** `lockthard tools get "Chandra OCR" --json`
261
- 6. **List CLI tools:** `lockthard cli-tools --json`
262
-
263
- ## Commands Reference
264
-
265
- | Command | Description | Example |
266
- |---|---|---|
267
- | `lockthard ping` | Check connection & auth status | `lockthard ping` |
268
- | `lockthard search <query>` | Search 2100+ tools | `lockthard search "ocr" -j` |
269
- | `lockthard tablets list` | List 81+ tablets | `lockthard tablets list -j` |
270
- | `lockthard tablets get <id>` | Inspect tablet content | `lockthard tablets get open-source -j` |
271
- | `lockthard tools get <id>` | Detailed tool info & CLI commands | `lockthard tools get "copilotkit" -j` |
272
- | `lockthard cli-tools` | List dedicated CLI tools | `lockthard cli-tools -j` |
273
- | `lockthard guide` | Show agent guide | `lockthard guide` |
274
- | `lockthard skill` | Output this SKILL.md definition | `lockthard skill` |
275
- """
276
- print(skill_content)
250
+
277
251
 
@@ -1,92 +1,92 @@
1
- Metadata-Version: 2.4
2
- Name: lockthard-cli
3
- Version: 0.1.3
4
- Summary: Super efficient CLI for LOCKTHARD AI tools directory and agents
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.0
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.3"
8
- description = "Super efficient CLI for LOCKTHARD AI tools directory and agents"
7
+ version = "0.2.0"
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