Skip to content

Commit 53b7d9d

Browse files
committed
refactor: rename LLM CLI to AI CLI for broader applicability
- Updates the project name and description to reflect a more inclusive scope - Modifies scripts and configuration files to align with the new naming convention - Adds a new prompt file for long repository descriptions - Enhances the description prompt to be more engaging and concise - Improves topic generation instructions for better repository discoverability
1 parent 59e20ee commit 53b7d9d

File tree

12 files changed

+102
-19
lines changed

12 files changed

+102
-19
lines changed

.cspell.json

+3-2
Original file line numberDiff line numberDiff line change
@@ -6,17 +6,16 @@
66
"acompletion",
77
"aiignore",
88
"asyncio",
9-
"chatglm",
109
"customise",
1110
"cython",
12-
"dalle",
1311
"dmypy",
1412
"dotenv",
1513
"dpath",
1614
"dpaths",
1715
"httpx",
1816
"ipynb",
1917
"ipython",
18+
"keras",
2019
"kwargs",
2120
"levelno",
2221
"liblaf",
@@ -38,6 +37,7 @@
3837
"pypackages",
3938
"pypi",
4039
"pyplot",
40+
"pyproject",
4141
"pyrightconfig",
4242
"pytest",
4343
"pytype",
@@ -47,6 +47,7 @@
4747
"repomix",
4848
"scrapy",
4949
"sdist",
50+
"tqdm",
5051
"trimesh",
5152
"typer",
5253
"venv"

README.md

+2-2
Original file line numberDiff line numberDiff line change
@@ -2,9 +2,9 @@
22

33
<img height="160" src="https://raw.githubusercontent.com/microsoft/fluentui-emoji/refs/heads/main/assets/Rocket/3D/rocket_3d.png">
44

5-
<h1>LLM CLI</h1>
5+
<h1>AI CLI</h1>
66

7-
LLM CLI is a powerful, open-source command-line interface for AI-driven repository management. Simplifies commit message generation, repository description, and topic suggestion, enhancing productivity and collaboration for developers.
7+
AI CLI is a powerful and versatile command-line interface that leverages AI to generate commit messages, repository descriptions, and topics, enhancing productivity and collaboration for developers. It supports multiple AI models, integrates seamlessly with Git, and offers a user-friendly experience to streamline your workflow.
88

99
[![][pypi-release-shield]][pypi-release-link]
1010
[![][github-releasedate-shield]][github-releasedate-link]

pyproject.toml

+1-1
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ dependencies = [
2424
"typer-di>=0.1.2",
2525
"typer>=0.13.1",
2626
]
27-
description = "🚀 LLM CLI - a powerful, open-source command-line interface for AI-driven repository management. Simplifies commit message generation, repository description, and topic suggestion, enhancing productivity and collaboration for developers."
27+
description = "🚀 AI CLI - A powerful and versatile command-line interface for AI-driven code commit messages, repository descriptions, and topic generation, designed to enhance productivity and collaboration."
2828
name = "liblaf-ai-cli"
2929
readme = "README.md"
3030
requires-python = ">=3.12"

scripts/gen-help.sh

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
#!/bin/bash
22
set -o errexit -o nounset -o pipefail
33

4-
typer ai_cli utils docs --output docs/help.md
4+
typer ai utils docs --output docs/help.md
55
prettier --write docs/help.md
66
markdownlint --fix docs/help.md

scripts/gen-init.sh

+1-1
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
set -o errexit -o nounset -o pipefail
33

44
git_root=$(git rev-parse --show-toplevel)
5-
src_dir=$git_root/src/ai_cli
5+
src_dir=$git_root/src/ai
66

77
readarray -t dpaths < <(find "$src_dir" -type d)
88
for dpath in "${dpaths[@]}"; do
+29
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
Compose a brief and engaging description of the repository in one or two sentences. The description should include the repository's main purpose, highlight its key features, and identify its appeal to potential contributors. Aim for clarity and conciseness to effectively communicate the value of the repository.
2+
3+
# Steps
4+
5+
1. Identify the main purpose of the repository.
6+
2. Highlight the key features and functionalities.
7+
3. Explain the appeal to potential contributors.
8+
4. Combine the information into one or two clear and concise sentences.
9+
10+
# Output Format
11+
12+
- The output should be a one or two sentences description.
13+
- Ensure the sentences are engaging and clearly communicate the repository's value.
14+
15+
# Examples
16+
17+
<Example>
18+
<Input>
19+
(codebase of Lobe Chat ...)
20+
</Input>
21+
<Answer>
22+
Lobe Chat is an open-source, modern-design AI chat framework. Supports Multi AI Providers (OpenAI / Claude 3 / Gemini / Ollama / Azure / DeepSeek), Knowledge Base (file upload / knowledge management / RAG), Multi-Modals (Vision / TTS) and plugin system. One-click FREE deployment of your private ChatGPT / Claude application.
23+
</Answer>
24+
</Example>
25+
26+
# Notes
27+
28+
- Focus on engaging and concise language.
29+
- Ensure the description captures the essence of the repository and its unique features.

src/ai/assets/prompts/description.md

+25-2
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,30 @@
1-
Using the details provided in the repository codebase, compose a brief and engaging description of the repository in one to two sentences. The description should include the repository's main purpose, highlight its key features, and identify its appeal to potential contributors. Aim for clarity and conciseness to effectively communicate the value of the repository.
1+
Compose a brief and engaging description of the repository in one sentence. The description should include the repository's main purpose, highlight its key features, and identify its appeal to potential contributors. Aim for clarity and conciseness to effectively communicate the value of the repository.
2+
3+
# Steps
4+
5+
1. Identify the main purpose of the repository.
6+
2. Highlight the key features and functionalities.
7+
3. Explain the appeal to potential contributors.
8+
4. Combine the information into one clear and concise sentence.
9+
10+
# Output Format
11+
12+
- The output should be a one sentence description.
13+
- Ensure the sentence are engaging and clearly communicate the repository's value.
14+
15+
# Examples
216

317
<Example>
18+
<Input>
19+
(codebase of tqdm ...)
20+
</Input>
421
<Answer>
5-
🤯 Lobe Chat - an open-source, modern-design AI chat framework. Supports Multi AI Providers (OpenAI / Claude 3 / Gemini / Ollama / Azure / DeepSeek), Knowledge Base (file upload / knowledge management / RAG), Multi-Modals (Vision / TTS) and plugin system. One-click FREE deployment of your private ChatGPT / Claude application.
22+
⚡ tqdm - a fast, extensible progress bar for python and CLI
623
</Answer>
724
</Example>
25+
26+
# Notes
27+
28+
- Focus on engaging and concise language.
29+
- Ensure the description captures the essence of the repository and its unique features.
30+
- Use emojis to make the description more engaging and visually appealing.

src/ai/assets/prompts/topics.md

+28-2
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,33 @@
1-
Analyze the provided codebase and propose a list of up to 20 relevant topics that will enhance the repository's discoverability and attractiveness to potential contributors. Consider the intended purpose, subject area, programming language, and any unique features of the project. Ensure all topics are in lowercase, use hyphens if necessary, and contain no more than 50 characters each.
1+
Generate relevant topics for a GitHub repository.
2+
3+
# Steps
4+
5+
1. **Analyze the Codebase**: Review the merged representation of the entire codebase, focusing on the metadata, repository structure, and individual file contents.
6+
2. **Identify Key Elements**: Determine the primary purpose, subject area, and programming language used in the project.
7+
3. **Highlight Unique Features**: Note any unique or standout features of the project that could attract contributors.
8+
4. **Generate Topics**: Create a list of up to 20 topics that reflect the analysis. Ensure each topic is concise, lowercase, and uses hyphens if necessary.
9+
10+
# Output Format
11+
12+
Output the list of topics as a single line of text, with each topic separated by a space. Each topic should be in lowercase and use hyphens if necessary.
13+
14+
<Answer>
15+
topic1 topic2 topic3 ...
16+
</Answer>
17+
18+
# Examples
219

320
<Example>
21+
<Input>
22+
(codebase of tqdm ...)
23+
</Input>
424
<Answer>
5-
chat ai nextjs tts gemini openai gpt knowledge-base claude rag gpt-4 chatgpt chatglm azure-openai-api function-calling ollama dalle-3 gpt-4-vision qwen2
25+
python cli console gui time terminal telegram utilities jupyter progress discord progress-bar parallel keras meter progressbar pandas progressmeter rate closember
626
</Answer>
727
</Example>
28+
29+
# Notes
30+
31+
- Ensure that the topics are relevant to the repository's content and purpose.
32+
- Each topic should be concise and descriptive, with no more than 50 characters.
33+
- Use hyphens to separate words within a topic if necessary.

src/ai/cmd/_app.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,6 @@
33
import ai.cmd as aim
44
import ai.utils as aiu
55

6-
app = typer_di.TyperDI(name="ai-cli", no_args_is_help=True)
6+
app = typer_di.TyperDI(name="ai", no_args_is_help=True)
77
aiu.add_command(app, aim.repo.app)
88
aiu.add_command(app, aim.commit.app)

src/ai/cmd/repo/_main.py

+1-3
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,4 @@ def _get_instruction(instruction: str) -> str:
4545
instruction_fpath: Path = Path(instruction)
4646
if instruction_fpath.is_file():
4747
return Path(instruction).read_text()
48-
return importlib.resources.read_text(
49-
"ai_cli.assets.instructions", f"{instruction}.md"
50-
)
48+
return importlib.resources.read_text("ai.assets.instructions", f"{instruction}.md")

src/ai/cmd/repo/description/_app.py

+8-2
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
import asyncio
2+
from typing import Annotated
23

4+
import typer
35
import typer_di
46

57
import ai.utils as aiu
@@ -8,7 +10,11 @@
810

911

1012
@app.command()
11-
def main(_: None = typer_di.Depends(aiu.get_config)) -> None:
13+
def main(
14+
*,
15+
long: Annotated[bool, typer.Option()] = False,
16+
_: None = typer_di.Depends(aiu.get_config),
17+
) -> None:
1218
from ._main import main
1319

14-
asyncio.run(main())
20+
asyncio.run(main(long=long))

src/ai/cmd/repo/description/_main.py

+2-2
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
import ai.utils as aiu
33

44

5-
async def main() -> None:
6-
instruction: str = aiu.get_prompt("description")
5+
async def main(*, long: bool = False) -> None:
6+
instruction: str = aiu.get_prompt("description-long" if long else "description")
77
prompt: str = await aiu.repomix(instruction)
88
await ai.output(prompt, prefix="<Answer>")

0 commit comments

Comments
 (0)