Added ErrCommandRequired error type
diff --git a/command_test.go b/command_test.go
index 1e577db..9b903a2 100644
--- a/command_test.go
+++ b/command_test.go
@@ -111,7 +111,7 @@
 	p := NewParser(&opts, None)
 	_, err := p.ParseArgs([]string{})
 
-	assertError(t, err, ErrRequired, "Please specify one command of: add or remove")
+	assertError(t, err, ErrCommandRequired, "Please specify one command of: add or remove")
 }
 
 type testCommand struct {
@@ -162,7 +162,7 @@
 		} `command:"add"`
 	}{}
 
-	assertParseFail(t, ErrRequired, "Unknown command `addd', did you mean `add'?", &opts, "-v", "addd")
+	assertParseFail(t, ErrCommandRequired, "Unknown command `addd', did you mean `add'?", &opts, "-v", "addd")
 }
 
 func TestCommandAdd(t *testing.T) {
diff --git a/error.go b/error.go
index cc0de47..f4af396 100644
--- a/error.go
+++ b/error.go
@@ -44,6 +44,10 @@
 
 	// ErrTag indicates an error while parsing flag tags.
 	ErrTag
+
+	// ErrCommandRequired indicates that a command was required but not
+	// specified
+	ErrCommandRequired
 )
 
 // Error represents a parser error. The error returned from Parse is of this
diff --git a/parser_private.go b/parser_private.go
index 21518ac..0f2f0be 100644
--- a/parser_private.go
+++ b/parser_private.go
@@ -103,7 +103,7 @@
 		}
 	}
 
-	return newError(ErrRequired, msg)
+	return newError(ErrCommandRequired, msg)
 }
 
 func (p *Parser) parseOption(s *parseState, name string, option *Option, canarg bool, argument *string) (retoption *Option, err error) {