feat(cli): Add -p shortcut and improve create command help text

Implemented Kimi's feedback suggestions:

1. Added -p shortcut for --preset flag
   - Makes presets easier to use: -p quick, -p standard, -p comprehensive
   - Updated create arguments to include "-p" in flags tuple

2. Improved help text formatting
   - Simplified description to avoid excessive wrapping
   - Made examples more concise and scannable
   - Custom NoWrapFormatter for better readability
   - Reduced verbosity while maintaining clarity

Changes:
- arguments/create.py: Added "-p" to preset flags
- create_command.py: Updated epilog with NoWrapFormatter
- parsers/create_parser.py: Simplified description, override register()

User Impact:
- Faster preset usage: "skill-seekers create <src> -p quick"
- Cleaner help output
- Better UX for frequently-used preset flag

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
This commit is contained in:
yusyus
2026-02-15 19:22:59 +03:00
parent f10551570d
commit 7e9b52f425
3 changed files with 72 additions and 68 deletions

View File

@@ -96,7 +96,7 @@ UNIVERSAL_ARGUMENTS: Dict[str, Dict[str, Any]] = {
# Note: RAG arguments are merged into UNIVERSAL_ARGUMENTS at runtime
# Preset system
"preset": {
"flags": ("--preset",),
"flags": ("--preset", "-p"),
"kwargs": {
"type": str,
"choices": ["quick", "standard", "comprehensive"],

View File

@@ -374,65 +374,52 @@ def main() -> int:
Returns:
Exit code (0 for success, non-zero for error)
"""
import textwrap
from skill_seekers.cli.arguments.create import add_create_arguments
# Parse arguments
# Custom formatter to prevent line wrapping in epilog
class NoWrapFormatter(argparse.RawDescriptionHelpFormatter):
def _split_lines(self, text, width):
return text.splitlines()
parser = argparse.ArgumentParser(
prog='skill-seekers create',
description='Create skill from any source (auto-detects type)',
formatter_class=argparse.RawDescriptionHelpFormatter,
epilog="""
formatter_class=NoWrapFormatter,
epilog=textwrap.dedent("""\
Examples:
Web documentation:
skill-seekers create https://docs.react.dev/
skill-seekers create docs.vue.org --preset quick
Web: skill-seekers create https://docs.react.dev/
GitHub: skill-seekers create facebook/react -p standard
Local: skill-seekers create ./my-project -p comprehensive
PDF: skill-seekers create tutorial.pdf --ocr
Config: skill-seekers create configs/react.json
GitHub repository:
skill-seekers create facebook/react
skill-seekers create github.com/vuejs/vue --preset standard
Source Auto-Detection:
• URLs/domains → web scraping
• owner/repo → GitHub analysis
• ./path → local codebase
• file.pdf → PDF extraction
• file.json → multi-source config
Local codebase:
skill-seekers create ./my-project
skill-seekers create /path/to/repo --preset comprehensive
Progressive Help (13 → 120+ flags):
--help-web Web scraping options
--help-github GitHub repository options
--help-local Local codebase analysis
--help-pdf PDF extraction options
--help-advanced Rare/advanced options
--help-all All options + compatibility
PDF file:
skill-seekers create tutorial.pdf --ocr
skill-seekers create guide.pdf --pages 1-10
Config file (multi-source):
skill-seekers create configs/react.json
Source Detection:
Source type is auto-detected from input:
• URLs (https://... or domain.com) → web scraping
• owner/repo or github.com/... → GitHub analysis
• ./path or /absolute/path → local codebase
• file.pdf → PDF extraction
• file.json → config file (multi-source)
Need More Options?
The default help shows universal arguments only (13 flags).
For source-specific options, use:
--help-web Web scraping options (max-pages, rate-limit, workers, etc.)
--help-github GitHub options (token, max-issues, no-changelog, etc.)
--help-local Local codebase options (languages, patterns, skip-*, etc.)
--help-pdf PDF extraction options (ocr, pages, etc.)
--help-advanced Advanced/rare options (no-rate-limit, interactive-*, etc.)
--help-all All 120+ options with compatibility matrix
Presets (NEW: Use -p shortcut):
-p quick Fast (1-2 min, basic features)
-p standard Balanced (5-10 min, recommended)
-p comprehensive Full (20-60 min, all features)
Common Workflows:
Quick exploration (1-2 min):
skill-seekers create <source> --preset quick
Production skill (5-10 min):
skill-seekers create <source> --preset standard --enhance-level 2
Comprehensive analysis (20-60 min):
skill-seekers create <source> --preset comprehensive --enhance-level 3
RAG pipeline ready:
skill-seekers create <source> --chunk-for-rag --chunk-size 512
"""
skill-seekers create <source> -p quick
skill-seekers create <source> -p standard --enhance-level 2
skill-seekers create <source> --chunk-for-rag
""")
)
# Add arguments in default mode (universal only)

View File

@@ -9,6 +9,7 @@ Implements progressive disclosure:
Follows existing SubcommandParser pattern for consistency.
"""
import argparse
from .base import SubcommandParser
from skill_seekers.cli.arguments.create import add_create_arguments
@@ -26,29 +27,22 @@ class CreateParser(SubcommandParser):
@property
def description(self) -> str:
return """Create skill from web docs, GitHub repos, local code, PDFs, or config files.
return """Auto-detects source type and creates skill.
Source type is auto-detected from the input:
- Web: https://docs.react.dev/ or docs.react.dev
- GitHub: facebook/react or github.com/facebook/react
- Local: ./my-project or /path/to/repo
- PDF: tutorial.pdf
- Config: configs/react.json
Quick Examples:
skill-seekers create https://docs.react.dev/ -p quick
skill-seekers create facebook/react -p standard
skill-seekers create ./my-project -p comprehensive
Examples:
skill-seekers create https://docs.react.dev/ --preset quick
skill-seekers create facebook/react --preset standard
skill-seekers create ./my-project --preset comprehensive
skill-seekers create tutorial.pdf --ocr
skill-seekers create configs/react.json
Source Types (auto-detected):
URLs → web docs | owner/repo → GitHub | ./path → local code
file.pdf → PDF | file.json → config (multi-source)
For source-specific options, use:
--help-web Show web scraping options
--help-github Show GitHub repository options
--help-local Show local codebase options
--help-pdf Show PDF extraction options
--help-advanced Show advanced/rare options
--help-all Show all 120+ options
Progressive Help (NEW -p shortcut):
Default help shows 13 flags. For more: --help-web, --help-github,
--help-local, --help-pdf, --help-advanced, --help-all (120+ flags)
Presets: -p quick (1-2min) | -p standard (5-10min) | -p comprehensive (20-60min)
"""
def add_arguments(self, parser):
@@ -101,3 +95,26 @@ For source-specific options, use:
help='Show all available options (120+ flags)',
dest='_help_all'
)
def register(self, subparsers):
"""Register this parser with custom formatter to prevent text wrapping.
Args:
subparsers: Subparsers object from main parser
Returns:
Configured ArgumentParser for this subcommand
"""
# Custom formatter that preserves line breaks
class NoWrapFormatter(argparse.RawDescriptionHelpFormatter):
def _split_lines(self, text, width):
return text.splitlines()
parser = subparsers.add_parser(
self.name,
help=self.help,
description=self.description,
formatter_class=NoWrapFormatter
)
self.add_arguments(parser)
return parser