| description | ArbSh Development Workflow - Feature Development Loop |
|---|
This workflow defines the standard process for developing new features in the ArbSh (Arabic-First Shell) project.
STOP AND WAIT FOR USER APPROVAL at each step marked with 🛑
Do NOT proceed to the next step without explicit user confirmation (e.g., "ok", "proceed", "next", "continue").
- Arabic-First Documentation: All code comments and XML documentation must be in Arabic (or bilingual where appropriate).
- BiDi Compliance: Every feature must respect Unicode Bidirectional Algorithm (UAX #9).
- Full File Output: When providing code, output the complete file contents.
- Preserve Existing Features: Never break or remove existing functionality.
- Iterative Approval: Each feature goes through planning → approval → implementation.
- Changelog Updates: Every change must be logged in CHANGELOG.md.
- Wait for Approval: NEVER proceed to next step without user confirmation.
- Review the current ROADMAP.md to identify the next planned feature.
- Create a detailed feature specification including:
- Feature name (in Arabic and English).
- Description and purpose.
- Syntax examples (for shell commands).
- Implementation approach (Pipeline, Cmdlet, or Core Logic).
- New files to be created (e.g.,
NewCmdlet.cs).
- Document the plan in an
implementation_plan.mdartifact. - 🛑 STOP: Present plan and WAIT for user approval before Step 2
Before writing any code:
- Update docs/USAGE_EXAMPLES.md with new command usage (if applicable).
- Update docs/PROJECT_ORGANIZATION.md if architecture changes.
- Update docs/BIDI_RULES_DESIGN.md if modifying BiDi algorithms.
- 🛑 STOP: Show changes and WAIT for approval
- Modify/Create files in
src_csharp/ArbSh.Console/ModelsorInterfaces:- Define new data structures or pipeline objects.
- Add new Attributes (e.g.,
[ArabicName]). - All comments in Arabic (XML docs).
- Provide FULL FILE contents.
- 🛑 STOP: Show Model/Interface changes and WAIT for approval
- Modify
src_csharp/ArbSh.Console/ParsingorI18n:- Add tokenizer rules for new syntax.
- Update BiDi algorithm rules if necessary.
- Arabic comments explaining logic.
- Provide FULL FILE contents.
- 🛑 STOP: Show Core Logic changes and WAIT for approval
- Modify/Create files in
src_csharp/ArbSh.Console/Commands:- Implement the
Cmdletlogic. - Ensure
[ArabicName]and parameters are defined. - Handle Pipeline input/output.
- Implement the
- Provide FULL FILE contents.
- 🛑 STOP: Show Cmdlet changes and WAIT for approval
- Create or Update tests in
src_csharp/ArbSh.Test:- Add Unit Tests for new logic.
- Add BiDi rendering tests if applicable.
- Ensures high code coverage.
- Provide FULL FILE contents.
- 🛑 STOP: Show Test file changes and WAIT for approval before running
# Navigate to solution root
cd d:\My Dev Life\Software Dev\ArbSh\src_csharp
# Build the solution
dotnet build
# Run Tests
dotnet test
# Run the Shell manually for verification
dotnet run --project ArbSh.Console
# (Manual steps: Try the new command/feature in the shell)- Run build and test commands.
- Report results.
- 🛑 STOP: Show test results and WAIT for approval before updating docs
Add entry under [Unreleased] section:
## [Unreleased]
### Added
- **Feature Name** — Description of what was added
### Changed
- Description of behavior changes
### Fixed
- Description of bug fixes- 🛑 STOP: Show CHANGELOG.md changes and WAIT for approval
Mark the completed feature:
- Change
[ ]to[x]for completed items. - Check if "Phase" is complete.
- 🛑 STOP: Show ROADMAP.md changes and WAIT for approval
- Ask user which feature to work on next.
- 🛑 STOP: WAIT for user to specify next feature.
- Return to Step 1.
The following user responses mean "proceed":
- "ok" / "OK" / "Ok"
- "proceed"
- "next"
- "continue"
- "yes"
- "go ahead"
- "approved"
- "looks good"
- "lgtm"
- "👍"
Any other response should be treated as feedback requiring changes.
/// <summary>
/// يمثل هذا الصنف الأمر الأساسي للطباعة.
/// Represents the basic print command.
/// </summary>
[ArabicName("اطبع")]
public class WriteOutputCommand : Cmdlet
{
/// <summary>
/// النص المراد طباعته.
/// The text to print.
/// </summary>
[Parameter(Position = 0)]
[ArabicName("النص")]
public string Text { get; set; }
}// التحقق من اتجاه النص
// Check text direction
if (BidiHelper.IsRtl(text)) {
// معالجة النصوص العربية
// Handle Arabic text
ProcessRtl(text);
}When modifying any source file, ensure:
- All new code has Arabic XML documentation.
-
[ArabicName]attributes are used for user-facing symbols. - Existing functionality (Pipeline, BiDi) is preserved.
- Code compiles without warnings (
dotnet build). - Tests passed (
dotnet test). - CHANGELOG.md updated.
- ROADMAP.md updated.
- User approved each file before moving to next.