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:
@@ -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"],
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user